所以...我知道C++标准库中的atoi函数应该将字符串转换为整数...它是如何工作的?...(我正在尝试学习东西,我只是想知道)。 ..如果您可以向我展示其中的代码,或者自己编写执行相同任务的代码,将不胜感激...预先感谢。

最佳答案

像这样:

int atoi( const char *c ) {
    int value = 0;
    int sign = 1;
    if( *c == '+' || *c == '-' ) {
       if( *c == '-' ) sign = -1;
       c++;
    }
    while ( isdigit( *c ) ) {
        value *= 10;
        value += (int) (*c-'0');
        c++;
    }
    return value * sign;
}

您可以遍历字符串中的字符,只要它们是数字即可。对于每个计数器,将其添加到要保留的计数器中-要添加的值是字符的整数值。这是通过从相关数字的ascii值中减去“0”的ascii值来完成的。

请注意,此代码不处理溢出。如果您输入“887452834572834928347578423485273”(这不适合int),则结果不确定。

关于c++ - C++中的atoi()函数如何工作?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5710091/

10-13 07:54