C++ 无法将c+;中的字符转换为整数+;循环中
为什么我的代码没有显示10 5 3的输入。它在1到9之间都是有效的,但是当它达到10或大于10时,就不会显示任何输出。我也尝试对其使用atoi(),但此行int x=str[j]-“0”中出现错误。请帮帮我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
#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;
}
}