Исключение первого шанса в VStack Overflow

Ниже приведена часть моего кода 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.

Почему исполнение не прекращается?

1

Решение

Если данный вход не имеет ожидаемого типа, failbit из cin установлено. Проверка этого бита и сброс сбрасывают значение до начального значения переменной.

if(!cin)
{
std::cin.clear();
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
}
0

Другие решения


По вопросам рекламы [email protected]