Pergunta de cinfail () do C ++

Ao executar o código a seguir e digitar um número, ele funciona bem. Mas ao digitar uma letra, o programa entra em um loop infinito, exibindo "Digite um número (0 para sair): cin falhou."

Minha intenção era lidar com o caso de falha cin e avisar o usuário novamente.

int number;
do{
    cout << "Enter a number (0 to exit): ";
    cin >> number;
    if(cin.fail()){
        cout << "cin failed." << endl;
        cin.clear();
    }else{
        cout << "cin succeeded, " << number << " entered." << endl;
    }
}while(number != 0);

questionAnswers(3)

yourAnswerToTheQuestion