【发布时间】:2016-10-25 18:56:22
【问题描述】:
我有一个带有可选菜单选项的简单 C++ 菜单。如果用户键入的不是有效的int,例如char 或double,程序将进入无限循环。我的代码如下。
#include <iostream>
using namespace std;
int main()
{
int selection;
do {
cout << "1) Update inventory" << endl;
cout << "2) Sell items" << endl;
cout << "3) List inventory" << endl;
cout << "4) Quit" << endl;
cout << "Please select an option: ";
cin >> selection;
}
while (selection != 4);
return 0;
}
为什么无效响应会导致死循环,如何防止?
【问题讨论】:
-
你想检查流的有效性,比如
if (!cin) { /*handle error*/ }。另请参阅Why is iostream::eof inside a loop condition considered wrong?。
标签: c++ menu user-input infinite-loop