cin para um int inserindo um char faz com que Loop é suposto para verificar a entrada para ir selvagem

Esta é uma função do meu jogo que vai pedir entrada e cin em "iAuswahl"! Em seguida, o loop while verifica se é um dos valores que eu quero 1-9 se não ativar e é suposto pedir nova entrada. Bruxa que faz para int. Mas se eu introduzir um char como ele vai enlouquecer e apenas continuar me dando de volta a minha cout e pular o cin! Minhas perguntas são por que ele faz isso e como faço para parar?

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);
}

questionAnswers(3)

yourAnswerToTheQuestion