2016-10-25 27 views
0

我有一个简单的C++菜单,带有可选择的菜单选项。如果用户输入除有效int之外的任何内容,如chardouble,程序将进入无限循环。我的代码如下。如果用户输入无效整数,C++菜单陷入无限

#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; 
} 

为什么无效响应导致无限循环,怎么能防止?

+0

你想检查流的有效性,比如'if(!cin){/ * handle error * /}'。另请参阅[为什么iostream :: eof在循环条件内被认为是错误的?](http://stackoverflow.com/questions/5605125/why-is-iostreameof-inside-a-loop-condition-considered-wrong)。 – jaggedSpire

回答

-1

cin >> selection; 

将在这两行:

cin.clear(); 
cin.ignore(); 

这将清除缓存并允许输入可以。

+2

这不是他所问的。他询问无效输入,例如输入字符而不是数字 – dwcanillas

+0

我意识到。这将解决问题。但是@ jaggedSpire是正确的。 –