如何使用 c++ 将数字字符转换为字符串

How to convert digit character to string using c++

本文关键字:转换 字符串 数字字符 何使用 c++      更新时间:2023-10-16

这是我的代码:

#include <iostream>
#include <string>
#include <sstream>
int main() {
    std::string userInput;
    std::getline(std::cin, userInput);
    int sum;
    int result;
    std::string numDigit;
    bool space = true;
    for (int i = 0; i < userInput.length(); i++) {
        if (isdigit(userInput[i]) && space) {
            numDigit += userInput[i];
            space = false;
        }else if(isdigit(userInput[i]) && !space) {
            numDigit += userInput[i];
        }else if (!isdigit(userInput[i]) && !space) {
            std::stringstream(numDigit) >> result;
            sum += result;
            numDigit = "";
            result = 0;
            space = true;
        }
        std::cout << sum;
    }
}

如果我用空格输入 1 2 3,它应该输出总和 = 6,但它输出许多数字为什么会这样?(对不起,我是 c++ 的初学者(

您正在使用变量 sum 和 result,而无需初始化它们。

使用任何编译器时,不能假定变量将自动初始化为零。因此,如果您使用未初始化的变量,则程序的行为将是未定义的,您想要的值可能很好,或者它将填充垃圾值,如80123901723012,-190283812791等...

int sum = 0;
int result = 0;

声明一个变量并将其初始化为零始终是一种很好的做法。


编辑:

您的代码遇到的问题是:
1.您应该只在 for 循环结束后输出sum
2.您应该检查i <= userInput.length()而不是检查小于。

修改后的代码:

#include <iostream>
#include <string>
#include <sstream>
int main() {
    std::string userInput;
    std::getline(std::cin, userInput);
    int sum = 0;
    int result = 0;
    std::string numDigit = "";
    bool space = true;
    for (int i = 0; i <= userInput.length(); i++) {
        if (isdigit(userInput[i]) && space) {
            numDigit += userInput[i];
            space = false;
        }
        else if (isdigit(userInput[i]) && !space) {
            numDigit += userInput[i];
        }
        else if (!isdigit(userInput[i]) && !space) {
            std::stringstream(numDigit) >> result;
            sum += result;
            numDigit = "";
            result = 0;
            space = true;
        }
    }
    std::cout << "sum = " << sum << std::endl;
}

<小时 />感谢您指出我的错误皮特,我已经对我的帖子进行了更正。