std :: cin loops incluso si llamo ignore () y clear ()

Estoy tratando de configurar un bucle de verificación de entrada para que continuamente pida al usuario una entrada válida (entera), pero parece quedar atrapado en un bucle infinito.

He buscado soluciones e intentadoignore() yclear(), pero aún así no se detiene.

¿Podría corregirme donde me equivoco aquí?

int num;
cin >> num;
while (cin.fail()) {
  cin.ignore();
  cin.clear();
  cout << "Enter valid number: " << endl;
  cin >> num;
}

Respuestas a la pregunta(2)

Su respuesta a la pregunta