这段代码在获得错误输入时不会阻止 stoi 运行
This snippet of code does not stop stoi from running when it gets bad input
我被这段代码困住了。如果用户输入不是数字,我正在尝试让此代码片段重新启动。它似乎没有这样做,我不知道为什么。如果有人能帮我一把,我将不胜感激。对不起开始和结束行缩进,这让我发疯了。
void write() {
string x, y;
int x1 = 0, y1 = 0, no = 0;
/*highNumber (x1, y1);*/
cout << endl << " x to display: ";
cin >> x;
cout << endl << " y to display: ";
cin >> y;
for (int i = 0; i < x.length(); i++) {
if (x[i] >= '0' || x[i] <= '9') {
no++;
}
}
if (no == x.length()) {
no = 0;
}
else {
write();
}
for (int i = 0; i < x.length(); i++) {
if (y[i] >= '0' || y[i] <= '9') {
no++;
}
}
if (no == x.length()) {
no = 0;
}
else {
write();
}
x1 = stoi(x);
y1 = stoi(y);
highNumber (x1, y1);
}
错误似乎就在这里:if (x[i] >= '0' || x[i] <= '9')
如果我正确理解您的代码,这可能应该if (x[i] >= '0' && x[i] <= '9')
,即使我在解析它时遇到了一些困难。无论哪种方式,您之前的代码都将为所有字符返回 true。这将检查它是否在 ascii 字符的数量范围内。
另外,似乎您的第二个循环正在检查x.size()
而不是在处理y
时y.size()
。如果x
的大小与y
不同,这应该很重要。
相关文章:
- 为什么无论你输入什么,这"while(cin.get(str,3))"只运行一次?
- 如何根据用户在C++中的输入运行不同数量的 for 循环
- 我可以根据用户输入在运行时生成"循环"吗?
- 在运行时为动态分配的内存输入值
- 在Visual Studio中运行/调试C ++时,如何在结束时等待输入
- 在 Linux 上C++:在作为 systemd 服务运行时侦听键盘输入
- 在运行时无法输入
- 需要有关运行具有输入类型的编译器的帮助
- 使用 (cin) 用户输入将其粘贴到 std::system 中,并在另一个终端中运行带有输入的命令
- C++ .我正在尝试通过使用开关内的数组来获取用户输入,但是当我运行代码时,它显示分段错误?
- 如何通过一次运行将多个输入样本馈送到C++张量流模型
- 为什么当我'y'作为输入时会循环,但当我给出'n'时运行良好
- 这段代码在获得错误输入时不会阻止 stoi 运行
- 为什么如果我从键盘输入EOF克里昂不要在运行窗口打印程序的输出?
- 如何让程序只运行用户输入的号码?
- 如何检查输入是否为字符并显示它是"invalid input",否则它将按原样运行
- 字母输入运行无限循环
- GLSL 计算着色器不会为大型输入运行
- Xcode 8.3:使用来自文件的输入运行目标
- 使用窗口大小和长输入运行中间带