字符串转数字

  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;
    }

你可能感兴趣的:(C++,字符串转数字)