Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: Zodiak98 en 26 Junio 2015, 02:18 AM

Título: ¿Cómo evitar almacenamientos no deseados?
Publicado por: Zodiak98 en 26 Junio 2015, 02:18 AM
Me gustaría saber cómo podría hacer para evitar que los usuarios ingresaran valores que no corresponden al tipo de variable. Por ejemplo, supongamos que tengo un código bastante sencillo como este:

Código (cpp) [Seleccionar]

#include <iostream>
using namespace std;

int main(void)
{
     int n;
     cin >> n;

     if(n > 10) cout << "Es mayor que 10" << endl;
     else cout << "Es menor a 10" << endl;

     cin.get();
     return 0;
}


Pero, ¿cómo podría hacer para prever una situación donde en lugar de un número introduzca un caracter o una cadena de caracteres y realizar otra acción?

Sé que es algo bastante simple y hasta ridículo, pero igual me gustaría saberlo.

Gracias de antemano. :) 
Título: Re: ¿Cómo evitar almacenamientos no deseados?
Publicado por: engel lex en 26 Junio 2015, 02:25 AM
solo revisa si cin falló

Código (cpp) [Seleccionar]
#include <iostream>
using namespace std;

int main(void)
{
     int n;
     cin >> n;
     if(cin.fail()){
          cout << "esto no es un entero" << endl;
          return 0;
     }
     if(n > 10) cout << "Es mayor que 10" << endl;
     else cout << "Es menor a 10" << endl;

     cin.get();
     return 0;
}
Título: Re: ¿Cómo evitar almacenamientos no deseados?
Publicado por: Zodiak98 en 26 Junio 2015, 02:40 AM
Cita de: engel lex en 26 Junio 2015, 02:25 AM
solo revisa si cin falló

Código (cpp) [Seleccionar]
#include <iostream>
using namespace std;

int main(void)
{
     int n;
     cin >> n;
     if(cin.fail()){
          cout << "esto no es un entero" << endl;
          return 0;
     }
     if(n > 10) cout << "Es mayor que 10" << endl;
     else cout << "Es menor a 10" << endl;

     cin.get();
     return 0;
}


Vale, gracias.