c_cpp 将字符串转换为整数。对于无效字符串,返回0。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 将字符串转换为整数。对于无效字符串,返回0。相关的知识,希望对你有一定的参考价值。

int atoi(const string &s) {
    // +, -, spaces
    if(s.empty()) return 0;
    
    int i = 0, N = s.size();
    while(i < N && s[i] == ' ') i++;
    // if(i == N) return 0;                 // unnecessary because of POS1 and POS2

/*  // unnecessary to remove trailing spaces
    int j = N-1;
    while(j >= i && s[j] == ' ') j--; */
    
    int sign = 1;
    if(s[i] == '+' || s[i] = '-') {
        if(s[i] == '-') sign = -1;
        i++;
    }
    
    long long sum = 0;                      // POS1
    while(i < N) {                          // POS2
        if(s[i] >= '0' && s[i] <= '9') { 
            sum = 10 * sum + s[i] - '0';
            if(sign * sum >= INT_MAX) return INT_MAX;
            if(sign * sum <= INT_MIN) return INT_MIN;
            i++;
        }
        else break;
    }
    return sign * sum;
}

以上是关于c_cpp 将字符串转换为整数。对于无效字符串,返回0。的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 stoi() 将字符串转换为整数?

c_cpp 将excel列字符串转换为数字,例如,将“AA”转换为27。

c_cpp 将int转换为字符串

c_cpp 将int转换为字符串

c_cpp 将字符串转换为矢量(单个数字)

c_cpp 将“bbccaaddddddde”转换为“ddddddaabbcce”,按频率和字母顺序转换字符串。使用仿函数