将C字符串转换为单个整数

时间:2018-04-26 19:22:52

标签: c++ type-conversion c-strings atoi

此练习要求将输入作为数字的字符数组,然后将数字的数字相加。

#include <iostream>
#include <cstring>
#include <cstdlib>

using namespace std;

int main() {

    //Input a series of single digit numbers
    char numbers[] = "a";

    cout << "Input a series of single digit numbers." << endl;
    cin >> numbers;

    //convert the character array into a int array.
    int sum = 0;
    for (int i = 0; i < size; i++) {
        sum += atoi(numbers[i]);
    }
    cout << "Sum of digits: " << sum; 

    return 0;
}

根据我的理解,atoi函数一次只转换整个字符数组(C字符串),我想我不能单步执行数组,但看起来这应该可行。我的另一个选择是将Cstring转换为一个大整数,然后使用字符串的长度来逐步计算每个位置的数字,但这可能是我可能做得更低效的。

你会用什么来查找单个数字作为字符数组的整数?

1 个答案:

答案 0 :(得分:3)

char numbers[] = "a";

这将创建一个包含2个char项的数组。这对于任何合理的事情都是不够的。请改用std::string

cin >> numbers;

最好使用std::getline标题中的<string>

sum += atoi(numbers[i]);

atoi将字符串作为参数,而不是单个char。您需要数字的总和,而不是通过将atoi应用于规范的所有右子串而获得的数字值的总和。

对于数字字符ch,相应的数字值为ch - '0'