C ++ Comprobando un entero.
Nuevo en C ++. Tener problemas correctamente en bucle mientras se maneja errores. Estoy intentando comprobar si la entrada del usuario es un número entero y es positiva.
do{
cout << "Please enter an integer.";
cin >> n;
if (cin.good())
{
if (n < 0) {cout << "Negative.";}
else {cout << "Positive.";}
}
else
{
cout << "Not an integer.";
cin.clear();
cin.ignore();
}
}while (!cin.good() || n < 0);
cout << "\ndone.";
Cuando se ingresa un número no entero, el bucle se rompe. Siento que estoy malinterpretando el uso inherente decin.clear()
ycin.ignore()
y el estado decin
durante este bucle. Si quito elcin.ignore()
, el bucle se vuelve infinito. ¿Por qué es esto? ¿Qué puedo hacer para convertir esto en un bucle que funcione con elegancia? Gracias.