C++ Меню застряло в бесконечности, если пользователь вводит недопустимое целое число

У меня есть простое меню 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;
}

Почему неправильные ответы вызывают бесконечный цикл и как его можно предотвратить?

1 ответ

Перед

cin >> selection;

Поместите эти две строки:

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

Это очистит буфер и позволит вводить данные.

Другие вопросы по тегам