如何停止由于无效输入 C++ 导致的无限循环
How to stop an infinite loop due to invalid input C++
所以我想接受两个输入,一个string和一个int,当用户输入"end"时退出循环。
我的问题是当输入 "end" 时它陷入循环,因为(我假设)当用户只输入一个时它期望两个输入。
我做了一些研究,发现了一些关于丢弃输入并用 cin.ignore()
和 cin.clear()
重置它的东西,但是,这些似乎只适用于接受单个输入时,因为我要求两个在一行中单独输入,它似乎不起作用。
我的代码所做的基本上是请求事物列表(名称值),将其存储在 class 中的数组中,并且上限为 10 个项目。所以,当输入"end"时,只需要退出while循环即可。其他一切似乎都工作正常,即当我输入 10 个项目时,它退出循环,其余代码按应有的方式执行。所以在输入 'end' 时似乎出现了问题。 (p.s.a 是字符串,b 是 int 类型)。
代码段为:
do {
cout << "Enter the item and value (enter 'end' to stop): ";
cin >> a >> b;
items1.set_name(a, i);
items1.set_price(b, i);
i++;
} while ( i < 10 && a != "end" );
这看起来应该很简单,如果这是一个愚蠢的问题,我很抱歉,但我想不通哈哈。
预先感谢您帮助我。
在继续阅读 b
之前,您需要测试 a
的值;像这样:
cin >> a;
if(a == "end")
break;
cin >> b;
要跳出循环,请使用
if (a == "end" || b == "end") break;
所以我想接受两个输入,一个string和一个int,当用户输入"end"时退出循环。
我的问题是当输入 "end" 时它陷入循环,因为(我假设)当用户只输入一个时它期望两个输入。
我做了一些研究,发现了一些关于丢弃输入并用 cin.ignore()
和 cin.clear()
重置它的东西,但是,这些似乎只适用于接受单个输入时,因为我要求两个在一行中单独输入,它似乎不起作用。
我的代码所做的基本上是请求事物列表(名称值),将其存储在 class 中的数组中,并且上限为 10 个项目。所以,当输入"end"时,只需要退出while循环即可。其他一切似乎都工作正常,即当我输入 10 个项目时,它退出循环,其余代码按应有的方式执行。所以在输入 'end' 时似乎出现了问题。 (p.s.a 是字符串,b 是 int 类型)。
代码段为:
do {
cout << "Enter the item and value (enter 'end' to stop): ";
cin >> a >> b;
items1.set_name(a, i);
items1.set_price(b, i);
i++;
} while ( i < 10 && a != "end" );
这看起来应该很简单,如果这是一个愚蠢的问题,我很抱歉,但我想不通哈哈。 预先感谢您帮助我。
在继续阅读 b
之前,您需要测试 a
的值;像这样:
cin >> a;
if(a == "end")
break;
cin >> b;
要跳出循环,请使用
if (a == "end" || b == "end") break;