Ниже приведена часть моего кода VC ++, кодируемого в VS2010.
do
{
std:: cout << "\nOPTIONS:\n";
std:: cout << "\n1. Get all session data.\n";
std:: cout << "\n2. Get Nth session data\n";
std:: cout << "\n3. Get Next session data\n";
std:: cout << "\n4. Get Previous session data\n";
std:: cout << "\n5. Get total no of sessions\n";
std:: cout << "\n6. Exit\n";
std:: cout << "\nEnter Your Option: ";
std :: cin >> option;
switch(int(option))
{
case 1:
{
data.ReadSetupFile();
break;
}
case 2:
{
break;
}
.....
......
case 6:
{
std::cout<<"\nARE YOU SURE YOU WANT TO EXIT?(Press y for yes and any other character for no)\n";
cin >> opt;
break;
}
default:
{
std::cout << "\nINAVALID OPTION!!TRY AGAIN\n";
break;
}
}
std::cout<<"\nDO YOU WANT TO CONTINUE?(Press y for yes and any other character for no)\n";
cin >> opt;
}while(opt=='y');
Тем не менее, если я вставлю символ вместо целого числа в качестве значения option
опция меню печатается в консоли вывода без завершения, пока я не использую ctrl+c
, При использовании этой стратегии разрыва я получаю сообщение как:
First-chance exception at 0x75936da7 in SetupAPIReader.exe: 0x40010005: Control-C.
Почему исполнение не прекращается?
Если данный вход не имеет ожидаемого типа, failbit
из cin
установлено. Проверка этого бита и сброс сбрасывают значение до начального значения переменной.
if(!cin)
{
std::cin.clear();
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
}