【问题标题】:Converting a C string to individual integers将 C 字符串转换为单个整数
【发布时间】:2018-04-26 19:22:52
【问题描述】:

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

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

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

【问题讨论】:

  • numbers 将是 char[2]。您不能期望在numbers 中捕获超过一位数的数字。 size 在您的示例中也未定义。

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


【解决方案1】:
char numbers[] = "a";

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

cin >> numbers;

最好使用&lt;string&gt; 标头中的std::getline

sum += atoi(numbers[i]);

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

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

【讨论】:

    猜你喜欢
    • 2014-03-06
    • 1970-01-01
    • 1970-01-01
    • 2020-01-03
    • 2012-12-22
    • 2016-06-04
    • 1970-01-01
    • 1970-01-01
    • 2012-03-26
    相关资源
    最近更新 更多