把字符串转化为整数
错误代码:
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需要这个函数的全局变量,所以会报错