字符串形式表示的整数的范围判断

 bool isIn_IntRange( string strInputNum )
{
    char cMaxInt[20];
    snprintf(cMaxInt, sizeof(cMaxInt)-1, "%d", numeric_limits<int>::max() );
    char cMinInt[20];
    snprintf(cMinInt, sizeof(cMinInt)-1, "%d", numeric_limits<int>::min() );

int i = 0;
strInputNum=trim(strInputNum);
if( strInputNum.length() > 1 ) //去除开头为0的情况 
{
while( i < strInputNum.length() )
{
if( '0' == strInputNum[i] )
{
i++;
}
else
break;
}
}
string strNum = strInputNum.substr(i); 

cout << "test" << strNum << endl;
if( '-' == strNum[0] )
    {
        if( strlen( strNum.c_str() ) > strlen(cMinInt) )
        {
            return false;
        }
        else if( strlen( strNum.c_str() ) == strlen( cMinInt ) )
        {
            if( strcmp(strNum.c_str(), cMinInt) > 0 )
                return false;
            else
                return true;
        }
    }
    else
    {
        if( strlen( strNum.c_str() ) > strlen(cMaxInt) )
        {
            return false;
        }
        else if( strlen( strNum.c_str() ) == strlen( cMaxInt ) )
        {
            if( strcmp(strNum.c_str(), cMaxInt) > 0 )
                return false;
            else
                return true;
        }
    }
    return true;
} 



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值