Código
int numero, cont = 0; bool continuar; do { continuar = false; cin.clear(); if(cont > 0) cin.ignore(1024, '\n'); cout << "Introduce un numero: "; cin >> numero; cont++; if(cin.fail() && cin.rdstate()){ cout << "NO ES UN NUMERO" << endl; continuar = true; } } while (continuar);
Por que 1024? De hecho funciona hasta con 1... yo crei que funcionaria con un simple cin.ignore( '\n');
Pero nop
Saludos...
EDIT:
Ya vi el por que, mejor hacerlo asi:
Código
int x; do{ if (!cin){ cin.clear(); while (cin.get() != '\n'); } cout<<"dame x: "; cin>>x; } while(!cin);