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

C++ 无法将c+;中的字符转换为整数+;循环中,c++,integer,character,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

为什么我的代码没有显示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;
        }
    }
}
#包括
#包括
#包括
使用名称空间std;
int main()
{
int n,sum=1,num=0;
字符串str;
cin>>n;

对于(int i=0;i从你的帖子中不清楚为什么有两个变量
num
sum
。这似乎是多余的

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

sum *= x;
num = sum;

把数字弄对

此外,当遇到空格时,需要将
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;
    }
}
for(int j=0;j
x
为0时,
sum*=x
做什么?将所有数字相乘。当你乘以0时,得到0。如何将字符转换为整数在这种情况下,你正确地将其转换为整数。问题在于转换后如何处理整数。你希望得到什么结果结果为
1053
?您将数字相乘,因此
1*0*5*3=0
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;
    }
}