En vez de leer el dato como un número tienes que leerlo como una cadena, después coges esa cadena e intentas convertir su contenido a un número... si la conversión se realiza con éxito el usuario ha introducido un número.
Código C++:
Ver originalstd::string cad;
std::cout << "Introduce un número: ";
std::cin >> cad;
bool ok = true;
for(std::string::const_iterator it=cad.begin(); it!=cad.end() && ok; ++it )
if(ok)
{
int numero
= atoi(cad.
c_str()); std::cout << "El número introducido es: " << numero << std::endl;
}
else
{
std::cout << "Error!!!" << std::endl;
}
Lo suyo sería encapsular el código que intenta la conversión en una función para no tener que repetir código. No se, quizás algo del tipo:
Código C++:
Ver originalbool StrToInt(const std::string& cadena, int& numero);
// ejemplo:
std::string cad;
std::cin >> cad;
int numero;
if(StrToInt(cad, numero))
std::cout << "El número introducido es" << numero << std::endl;
else
std::cout << "Error!!!" << std::endl;
Un saludo.