Wprowadzanie przez użytkownika liczb całkowitych - obsługa błędów

Mam pewne problemy z niektórymi obszarami wejściowymi mojego programu. Istnieje kilka części, w których użytkownik wprowadza określoną liczbę całkowitą. Nawet jeśli wprowadzą niewłaściwą, która jest w porządku i elegancka, zauważyłem, że jeśli wprowadzą cokolwiek innego niż typ całkowity, jak „m”, to zapętli komunikat błędu.

Mam kilka funkcji, które mają w nich całkowitą wartość wejściową. Oto jeden na przykład.

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: ";
    }
}

[ROZWIĄZANY]

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: ";
        }
    }
}

questionAnswers(3)

yourAnswerToTheQuestion