把字符串转化为整数

错误代码:

class Solution {
public:
    enum status {kvalid = 0,kinvalid};
    int now_status;
    int StrToInt(string str) {
        now_status = kinvalid;
        int length = str.length();
        bool minus = false;
        int index = 0;
        if(str[index] == '\0')
            return 0;
        if(str[index] == '+')
            index++;
        if(str[index] == '-'){
            minus = true;
            index++;
        }
        long long num = 0;
        if(str[index] != '\0'){
            num = StrToIntCore(str,minus,index);
        }
        return (int)num;
    }
    long long StrToIntCore(string str,bool minus,int index){
        int flag = minus ? -1 : 1;
        int length = str.size();
        //long long num = 0;
        for(;index < length;index++){
            long long num = 0;
            if(str[index] >= '0' && str[index] <= '9'){
                num = num*10 + flag*(str[index] - '0');
                int xxx = 0x80000000;
                if(num < xxx || num > 0x7FFFFFFF){
                    num = 0;
                    break;
                }
            }
            else{
                num = 0;
                break;
            }
        }
        if(str[index] == '\0')
            now_status = kvalid;
        return num;
    }
};            

这个错误是想提醒自己关于作用域的问题

如果把long long num = 0;放在for循环里,那这就是一个局部for循环的变量,但return num需要这个函数的全局变量,所以会报错

 

posted @ 2017-09-17 21:58  有梦就要去实现他  阅读(189)  评论(0编辑  收藏  举报