字符串转数字

  1. 给定一个字符串,把它转换成数字。要考虑字符串为空,异常字符等多种情况。

  2. 算法分析;我们定义一个函数,返回bool类型,来确认是否转换成功。我们在函数参数列表中,引用要存储的数字。当int型超过最大的长度的时候记得判断是否溢出。

  3. #include
    using namespace std;
    bool str2Int(char *ch, int &sum)
    {
    long long num = 0;
    bool mins = true;//正负号的标志
    bool cal = true;//是否while进入计算的标志
    if (*ch == ‘-’)
    {
    mins = false;
    ch++;
    }
    else if(*ch==’+’)
    {
    mins = true;
    ch++;
    }
    while (*ch != ‘\0’)
    {
    cal = false;
    if (*ch<‘0’ || *ch>‘9’)
    {
    sum = 0;
    return false;
    }
    else
    {
    num = num * 10 + *ch - ‘0’;
    if ((mins && num > 0x7FFFFFFF) || (!mins && -num < (signed int)0x80000000))//我们用一个long long型来保存int型,当超过int型的范围的时候,直接退出即可。
    {
    sum = 0;
    return false;
    }
    }
    ch++;
    }
    if (*ch == ‘\0’ && cal)
    {
    sum = 0;
    return false;
    }
    if (mins)
    {
    sum = num;
    }
    else
    {
    sum = -num;
    }

    return true;
    }
    int main()
    {
    long long num = 10000;
    while (num < 0x7FFFFFFF)
    {
    num = num*num;
    }
    cout << num << endl;

    cout << “---------------Test 1--------------------” << endl;
    int sum = 0;
    if (str2Int("-789654134697788", sum))
    {
    cout << sum << endl;
    }
    else
    {
    cout << “Error” << endl;
    }
    system(“pause”);
    return 0;
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值