如何停止由于无效输入 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;