Ver Mensaje Individual
  #2 (permalink)  
Antiguo 29/09/2015, 01:01
eferion
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 9 años, 7 meses
Puntos: 204
Respuesta: Como validar solo numeros en c++?

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 original
  1. std::string cad;
  2. std::cout << "Introduce un número: ";
  3. std::cin >> cad;
  4.  
  5. bool ok = true;
  6. for(std::string::const_iterator it=cad.begin(); it!=cad.end() && ok; ++it )
  7.   ok = isdigit(*it);
  8.  
  9. if(ok)
  10. {
  11.   int numero = atoi(cad.c_str());
  12.   std::cout << "El número introducido es: " << numero << std::endl;
  13. }
  14. else
  15. {
  16.   std::cout << "Error!!!" << std::endl;
  17. }

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 original
  1. bool StrToInt(const std::string& cadena, int& numero);
  2.  
  3. // ejemplo:
  4. std::string cad;
  5. std::cin >> cad;
  6.  
  7. int numero;
  8. if(StrToInt(cad, numero))
  9.   std::cout << "El número introducido es" << numero << std::endl;
  10. else
  11.   std::cout << "Error!!!" << std::endl;

Un saludo.