当用户输入无效整数时,c++菜单卡住了

C++ Menu stuck in infinite if user enters invalid integer

本文关键字:菜单 c++ 用户 输入 无效 整数      更新时间:2023-10-16

我有一个简单的带有可选菜单选项的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;
}

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

cin >> selection;

放置以下两行:

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