【发布时间】:2020-12-31 07:15:50
【问题描述】:
我的程序需要检查插入的字符串是否是自然数,中间没有任何混合,然后才能执行任何进一步的操作。出于这个原因,我在 'for' 循环中做了一个过滤器来检查所有插入的字符是否实际上是数字,但应用程序似乎跳过了每一次检查,并立即进入重新插入部分。
我已经尝试使用“switch”和“if-else”来执行此操作,但它们似乎都有这个问题。下面是代码 sn-ps 应该更好地说明我的意思。
'if-else' 代码:
using namespace std;
int main (){
string in;
cout << "Insert your string: ";
getline (cin, in);
int l = in.size(), x = 5;
for (int i = 0; i < l;) {
if (in[i] == 0 || in[i] == 1 || in[i] == 2 || in[i] == 3 || in[i] == 4 || in[i] == 5 || in[i] == 6 || in[i] == 7 || in[i] == 8 || in[i] == 9){
i++;
}
else {
cout << "This is not a valid number.";
cout << "\nPlease try again: ";
getline (cin, in);
l = in.size();
i = 0;
}
}
cout << "The string is a valid number."
return 0;
}
“开关”代码:
using namespace std;
int main (){
string in;
cout << "Insert your string: ";
getline (cin, in);
int l = in.size(), x = 5;
for (int i = 0; i < l;) {
switch (in[i]){
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
case 8:
case 9:
i++;
break;
default:
cout << "This is not a valid number.";
cout << "\nPlease try again: ";
getline (cin, in);
l = in.size();
i = 0;
break;
}
}
cout << "The string is a valid number.";
return 0;
}
您能帮我解决这个问题,或者建议一种更好的方法来过滤掉有效数据吗?
提前致谢。
【问题讨论】:
-
它没有损坏,除非您发现了一个罕见的编译器错误,但它的行为可能与您预期的不同。这不是一回事。
标签: c++ for-loop if-statement switch-statement