如果用户输入无效整数,C ++菜单会无限期地停留

时间:2016-10-25 18:56:22

标签: c++ menu user-input infinite-loop

我有一个带有可选菜单选项的简单C ++菜单。如果用户键入了有效int以外的任何内容,例如chardouble,则程序将进入无限循环。我的代码如下。

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

为什么无效响应会导致无限循环?如何防止它?

1 个答案:

答案 0 :(得分:-1)

之前

cin >> selection;

放置这两行:

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

这将清除缓冲区并允许输入。