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

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

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

最佳答案

char numbers[] = "a";

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

cin >> numbers;

更好用std::getline来自 <string>标题。

sum += atoi(numbers[i]);

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

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

关于c++ - 将 C 字符串转换为单个整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50050527/

相关文章:

F# 将字符串转换为 float

java - 对于返回类型 -ClassCastException,将字符串转换为 Date 错误

c++ - 围绕变量 "name"的堆栈已损坏 C++

c - 如何在没有相同引用的情况下将文本文件中的字符串存储在 C 中?

c++ - 在Thrift中,有没有一种方法可以避免生成C++ setter?

c++ - UDP WinSock - 未接收广播数据包

c++ - 未定义、实现定义、未指定的行为都不是

mysql - mysql函数是否可以在输入时接受空数据类型?

c++ - Boost ICL 和 Boost 序列化的结合

c - strlcpy 中的 'l' 是什么?