需考虑各种条件,如空字符,正负号,非法输入等问题,还要考虑超出int范围的问题。下面的代码中,若是非法输入,则输出0,也没考虑超出范围的问题。若要考虑非法输入,可设置一个全局变量。
int StrToInt(string s)
{
int result = 0;
//判断是否为空字符串
if(s.empty()) return result;
int flag = 0;
for(int i=0;i<s.size();i++){
if(i == 0){
//正负号判断
if(s[i] == '+') flag = 1;
else if(s[i] == '-') flag = -1;
else if(s[i] >= '0' && s[i] <= '9'){
result = s[i] - '0';
flag = 1;
}
else break;
}
else{
if(s[i] >= '0' && s[i] <= '9')
result = result*10 + (s[i] - '0');
//非法输入返回0
else{
result = 0;
break;
}
}
}
return flag*result;
}