cin для int, вводящего символ, приводит к тому, что цикл, который должен проверять ввод, становится диким

Это функция моей игры, она будет запрашивать ввод и попадать в "iAuswahl"! Затем цикл while проверяет, является ли это одним из значений, которые я хочу 1-9, если нет, он активируется и должен запрашивать новый ввод. Ведьма это делает для Int. Но если я введу символ как r, он сойдет с ума и просто продолжит возвращать мне мой cout и пропустить cin! Мои вопросы: почему он это делает и как мне это остановить?

void zug(string sSpieler, int iDran){
    int iAuswahl;
    char cXO = 'O';

    if (iDran == 1)
    {
        cXO = 'X';
    }

    cout << sSpieler << ", Sie sind am Zug. Bitte waehlen sie eins der Felder.\n" << endl;
    grafik();
    cout << "Sie sind >> " << cXO << " <<." << endl;
    cin >> iAuswahl;
    cout << endl;

    while ( 
        iAuswahl != 1 
        && iAuswahl != 2 
        && iAuswahl != 3 
        && iAuswahl != 4 
        && iAuswahl != 5 
        && iAuswahl != 6 
        && iAuswahl != 7
        && iAuswahl != 8 
        && iAuswahl != 9
    )
    {
        cout << "Kein gültiges Feld bitte wählen sie noch einmal!\n" << endl;
        cin >> iAuswahl;
    }
    feldfuellen(iAuswahl, cXO);
}

Ответы на вопрос(3)

Ваш ответ на вопрос