c++ - 无法在循环中的 C++ 中将字符转换为整数

标签 c++ integer character

为什么我的代码对于 10 5 3 的输入没有显示任何内容。它适用于 1 到 9 之前的所有内容,但是每当它达到 10 或大于 10 时,就不会显示任何输出。我也尝试为此使用 atoi() 但此行中有错误 int x = str[j] - '0' 。请帮助我。

#include<iostream>
#include<string>
#include<cstdlib>
using namespace std;
int main()
{
    int n, sum = 1, num = 0;
    string str;
    cin >> n;
    for(int i = 0; i <= n; i++) {
        getline(cin, str);
        for(int j = 0; j < str.length(); j++) {
            if(str[j] != ' ') {
                int x = str[j] - '0'; // Here is the problem even I use atoi() but error
                sum *= x;
                num = sum;
            }
        }
        if(num != 0) {
            cout << num << endl;
            num = 0;
            sum = 1;
        }
    }
}

最佳答案

从您的帖子中不清楚为什么您有两个变量 numsum。这似乎是多余的。

假设您只需要 num,替换这些行

sum *= x;
num = sum;

通过

num = (10*num + x);

得到正确的数字。

此外,当您遇到空格时,您需要将num 重置为0。否则,输入 10 8 将被视为 108

for(int j = 0; j < str.length(); j++) {
    if(str[j] != ' ') {
        num = (10*num + x);
    } else {
       // Use num and then reset it 0
       // ...
       num = 0;
    }
}

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

相关文章:

c++ - 对容器中项目的常量正确指针访问

c++ - 运算符重载删除函数

c++ - 这个部分模板特化有什么问题?

Java ASCII 控制码到文字值

c# - .NET 如何确定字符的 Unicode 类别?

c - 如何连续输入两个字符?

c++ - 从 uint8 c++ 获取 RGB 像素值

c - VB6整数到两个字节(C短)通过串行发送

json - 数据绑定(bind) Controller 服务 : works for objects but not for numbers

c# - 计算整数十进制长度的最快方法? (。网)