У меня возникли проблемы с некоторыми областями ввода моей программы. Есть несколько частей, где пользователь вводит определенное целое число. Даже если они введут неправильный, все это прекрасно и денди, но я заметил, что если они вводят что-либо не целочисленного типа типа «m», тогда он будет зацикливать сообщение об ошибке повторно.Пользовательский ввод целых чисел - обработка ошибок
У меня есть пара функций, которые имеют в них целочисленный ввод. Вот пример.
void Room::move(vector<Room>& v, int exone, int extwo, int exthree, int current)
{
v[current].is_occupied = false;
int room_choice;
cout << "\nEnter room to move to: ";
while(true)
{
cin >> room_choice;
if(room_choice == exone || room_choice == extwo || room_choice == exthree)
{
v[room_choice].is_occupied = true;
break;
}
else cout << "Incorrect entry. Try again: ";
}
}
[РЕШИТЬ]
void Room::move(vector<Room>& v, int exone, int extwo, int exthree, int current)
{
v[current].is_occupied = false;
int room_choice;
cout << "\nEnter room to move to: ";
while(true)
{
cin >> room_choice;
if(room_choice == exone || room_choice == extwo || room_choice == exthree)
{
v[room_choice].is_occupied = true;
break;
}
else if(cin.fail())
{
cin.clear()
cin.ignore()
cout << "Incorrect entry. Try again: ";
}
}
}
Aaarrgh !!! Почему профессора продолжают назначать эти глупые упражнения ввода-вывода в консоль? –