У меня есть следующий воспроизводимый пример:
#include <string>
#include <iostream>
using namespace std;
int main()
{
int choice;
bool run = true;
char inner_choice;
bool inner_run = true;
while(run != false)
{
cout << "Pick a selection" << endl;
cout << "1) Case 1" << endl;
cout << "2) Case 2" << endl;
cout << "3) Case 3" << endl;
cout << "4) Quit" << endl;
cout << "Enter your choice: ";
cin >> choice;
switch(choice)
{
case 1: cout << "Inside case 1" << endl;
break;
case 2: cout << "Inside case 2" << endl;
break;
case 3: cout << "Select inner menu" << endl;
cout << "a) Inner case a" << endl;
cout << "b) Inner case b" << endl;
while(inner_run != false)
{
cout << "q) q to go back main menu" << endl;
cin >> inner_choice;
switch(inner_choice)
{
case 'a': cout << "Inside inner case a" << endl;
break;
case 'b': cout << "Inside inner case b" << endl;
break;
case 'q': cout << "Going back" << endl;
inner_run = false;
break;
cin.clear();
}
}
break;
case 4: cout << "Terminate" << endl;
run = false;
break;
}
}
return 0;
}
Проблема в том, что когда я выбираю 3
в первый раз, он отображает вариант, позволяющий мне выбрать внутреннее меню. Когда я выбираю от q
до go обратно в главное меню, а затем снова обращаюсь к 3
, возможность выбора внутреннего меню пропадает.
Я думал, что это могло быть из-за cin
поток все еще имеет ввод, поэтому я поместил cin.clear (), но проблема не устранена.
Есть предложения?