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

Converting a C string to individual integers

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

#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 转换为一个大整数,然后使用字符串的长度遍历并计算每个位置的数字,但这可能比我能做的更低效。

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

char numbers[] = "a";

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

cin >> numbers;

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

sum += atoi(numbers[i]);

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

对于一个数字字符ch,对应的数字值为ch - '0'.