字符串转化为整形

字数 88阅读 63

需考虑各种条件,如空字符,正负号,非法输入等问题,还要考虑超出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;
}

推荐阅读更多精彩内容