В настоящее время я пишу простое приложение, которое включает определенное меню, такое как Главное меню> Подменю> Под-подменю ... и т. Д. И я добавил проверку ввода для всех из них, чтобы предотвратить ошибку ввода, например,
while (option != '1' && option != '2' && option != '3' && option != '0')
{
//correction prompt
}
В одном из моих меню, когда я вхожу в его подменю и возвращаюсь к нему.Любые входные данные, которые я пытаюсь ввести, приведут к тому, что система войдет в мой цикл проверки по крайней мере один раз, при условии, что вход является правильным или нет.
Мой код:
void passengerRecord()
{
int again = 0;
char option;
do
{
system("CLS");
cout << "Please tell me what you want to do." << endl;
cout << "1. Add Passenger Record" << endl;
cout << "2. Edit Passenger Record" << endl;
cout << "3. Delete Passenger Record" << endl;
cout << "0. Back to System Module Menu" << endl;
cout << "Your choice: ";
cin.ignore();
if (again > 0)
cin.clear();
cin.get(option);
while (option != '1' && option != '2' && option != '3' && option != '0')
{
system("CLS");
cout << "Error Input! Please try again." << endl;
cout << "Please tell me what you want to do." << endl;
cout << "1. Add Passenger Record" << endl;
cout << "2. Edit Passenger Record" << endl;
cout << "3. Delete Passenger Record" << endl;
cout << "0. Back to System Module Menu" << endl;
cout << "Your choice: ";
cin.get(option);
}
switch (option)
{
case '1': passengerAddsa();break;
case '2': passengerEditsa();break;
case '3': passengerDeletesa();break;
case '0': cout << "Redirecting back to module menu...";
cin.ignore();break;
default: cout << "Exception error occurred!";
}
again++;
} while (option != '0');
}
Пока яВы вошли в одно из его подменю (добавить, отредактировать, удалить) и вернуться сюда (либо в другую функцию, используя cin.get () и перейти к возврату; или в конец функции), следующий ввод, который я ввожу дляэто меню войдет в цикл проверки как минимум один раз.Эта ситуация произошла только во второй раз ++ доступ к этому меню, при первом доступе нет проблем
Метод, который я пробовал: 1.) cin.ignore (), он бесполезен и просто требует от меня вводабольше линии.2.) cin.clear (), разницы не вижу.Вероятно, это не имеет ничего общего с буфером cin 3.) Только запустите метод 1,2 после второго раза в меню, с again ++
и if (again>0) //syntax
, не помогая.
Я сжал то, что яВыучил раньше, но не повезло, не могу найти подобную проблему.Спасибо за любую помощь, спасибо.