美文网首页
1.把一个字符串转为整数

1.把一个字符串转为整数

作者: 红豆豆 | 来源:发表于2020-03-26 21:09 被阅读0次

    #include <iostream>

    #include <string>

    using namespace std;

    class Solution {

    public:

        enum Status { kValid = 0, kInvalid };

        int g_nStatus = kValid;

        int StrToInt(string str) {

            g_nStatus = kInvalid;

            long long num = 0;

            const char* cstr = str.c_str();

            // 1.指针为NULL或空字符处理

            if ((cstr == NULL) || (*cstr == '\0'))

            {

                return 0;

            }

            // 2.正负号处理

            int minus = 1;

            if (*cstr == '-')

            {

                minus = -1;

                cstr++;

            }

            else if (*cstr == '+')

                cstr++;

            // 迭代字符串

            while (*cstr != '\0')

            {

                // 3.非数字异常字符处理

                if (*cstr < '0' || *cstr > '9')

                {

                    g_nStatus = kInvalid;

                    num = 0;

                    break;

                }

                // 4.核心逻辑

                g_nStatus = kValid;

                num = num * 10 + (*cstr - '0');

                cstr++;

                // 5.数据溢出处理

                if (((minus > 0) && (num > 0x7FFFFFFF)) ||

                    ((minus < 0) && (num > 0x80000000)))

                {

                    g_nStatus = kInvalid;

                    num = 0;

                    break;

                }

            }

            // 5.后处理,增加正负号

            if (g_nStatus == kValid)

                num = num * minus;

            return (int)num;

        }

    };

    相关文章

      网友评论

          本文标题:1.把一个字符串转为整数

          本文链接:https://www.haomeiwen.com/subject/bqyhuhtx.html