variable usar lenguaje leer funciones ejemplos como caracteres cadenas cadena arreglo c++ integer character cin

c++ - usar - ¿Cómo puedo evitar la entrada de caracteres para una variable int?



leer cadena de caracteres en c (3)

El siguiente programa muestra un valor ''int'' que se ingresa y sale al mismo tiempo. Sin embargo, cuando entré a un personaje, entra en un ciclo infinito que muestra el valor ''int'' anterior ingresado. ¿Cómo puedo evitar que se ingrese un personaje?

#include<iostream> using namespace std; int main(){ int n; while(n!=0){ cin>>n; cout<<n<<endl; } return 0; }


Si desea usar la función de definición de usuario, puede usar el valor ascii / ansi para restringir la entrada de char.

48 -57 es el rango de los valores de 0 a 9


Motivo del bucle infinito:

cin entra en un estado fallido y eso hace que ignore otras llamadas hasta que se restablecen el indicador de error y el búfer.

cin.clear(); cin.ignore(100, ''/n''); //100 --> asks cin to discard 100 characters from the input stream.

Verifica si la entrada es numérica:

En su código, incluso un tipo no int se convierte a int de todos modos. No hay forma de comprobar si la entrada es numérica, sin tomar entrada en una matriz char, y llamando a la función isdigit() en cada dígito.

La función isdigit () se puede usar para distinguir dígitos y alfabetos. Esta función está presente en el encabezado <cctype> .

Una función is_int () se vería así.

for(int i=0; char[i]!=''/0'';i++){ if(!isdigit(str[i])) return false; } return true;


#include <iostream> #include <climits> // for INT_MAX limits using namespace std; int main() { int num; cout << "Enter a number./n"; cin >> num; // input validation while (cin.fail()) { cin.clear(); // clear input buffer to restore cin to a usable state cin.ignore(INT_MAX, ''/n''); // ignore last input cout << "You can only enter numbers./n"; cout << "Enter a number./n"; cin >> num; } }