yo recomendaría hacerlo así
Código (cpp) [Seleccionar]
int main(){
int numero; ///este es el numero que quiero leer
while(true){ //ciclo infinito
cout << "INTRODUZCA UN NUMERO: ";
cin >> numero; //introducimos el numero
if (!cin){ // si cin falló porque el tipo era erroneo
cin.clear(); //limpiamos cin
cin.ignore(1<<30,'\n'); // ingoramos los "enter" que queden en buffer,
//el primero numero es simplemente un numero arbitrariamente grande
cout << "dato erroneo" << endl; // indicamos que el dato está mal
}else{ // si está bien
cout << "ok: " << numero << endl; // ok
break; // rompemos el ciclo
}
}
return 0; // main siempre debe retornar 0 si es ok