字符串转换为数字

1、 题目

把字符串转换成整数

2、思路

1.功能测试

正数/复数/0

2.边界值测试

最大的正整数/最小的负整数(数据上下溢出)

3.特殊输入测试

空字符串“”的处理,返回0,设置非法输入
字符串只有符号位的处理,返回0,设置非法输入
输入的字符串中有非数字字符,返回0,设置非法输入

class Solution {
public:
    int StrToInt(string str) 
    {
        const char*cstr = str.c_str();
        if(str.empty())
        {
            return 0;
        }
        long long sum = 0;
         // 处理符号位
        int IF = 1;
        if(*cstr=='+')
        {
            IF = 1;
            cstr++;

        }
        else if(*cstr=='-')
        {
            IF = -1;
            cstr++;
        }

            while(*cstr!='\0')
            {

                if(*cstr>='0'&&*cstr<='9')
                {
                    sum = sum*10+(*cstr-'0');
                    cstr++;
                    //如果溢出,则标记为非法输入
                    if(((IF>0)&&(sum>0x7FFFFFFF)||(IF<0)&&(sum>0x80000000)))    
                    {
                        return 0;
                    }
                }
                else
                {
                    return 0;
                }
            }


         sum = sum*IF;
         return (int)sum;


    }
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值