Entrada de caracteres en el ciclo while usando C++

Muhammad Husnain 16 febrero 2024
Entrada de caracteres en el ciclo while usando C++

Esta guía trivial discutirá el manejo de entradas en C++. Además, analizaremos el problema de abordar las entradas no válidas por parte del usuario. Por último, discutiremos cómo se puede tomar la entrada del usuario usando el bucle while.

En primer lugar, se debe conocer el procedimiento para tomar datos de entrada del usuario en C++. La librería iostream en C++ nos proporciona la función cin. Tomará la entrada del usuario y almacenará el valor en la variable que se utiliza.

Ejemplo de código:

int x;
cin >> x;

En este código, x es una variable entera declarada en la línea n.° 1, y la entrada se realiza en la línea n.° 2. cin solicitará al usuario que ingrese los datos y almacene esos datos en la variable x. Este valor debe ser un valor entero; de lo contrario, el valor se guardará parcialmente en x o no se guardará.

Utilice el bucle while con la función cin en C++

Considere otro ejemplo en el que queremos tomar múltiples entradas hasta que el usuario ingrese algunos datos no válidos. Si se ingresan algunos datos no válidos, la entrada debe cerrarse.

Código:

int main() {
  int a;
  ;
  while (cin >> a) {
    cout << "You entered the correct input value" << endl;
  }
  cout << "Sorry, you have entered wrong type of data." << endl;
}

Producción:

use while cin para tomar múltiples entradas hasta que el usuario ingrese algunos datos no válidos

Se le solicita al usuario que ingrese un valor, e ingresamos el valor 2, que es un valor int. Entonces, el bucle continúa iterando y nuevamente se le solicita al usuario.

Después de tres intentos, ingresamos algunos caracteres (es decir, abc) que no son del tipo int. Esto hace que el flujo de entrada estándar (asociado con cin) se destruya, y la expresión cin >> a devuelve false.

Por lo tanto, el bucle se rompe y el control se desplaza a la línea fuera del bucle. Podemos restringir el ingreso de algunos datos no válidos de esta manera.

En el siguiente ejemplo se muestra otra forma de lograr la misma tarea.

Código:

int main() {
  int a;
  ;
  while (cin) {
    cin >> a;
    cout << "You entered the correct input value" << endl;
  }
  cout << "Sorry, you have entered a wrong type of data." << endl;
}

Debemos saber que cin tiene cuatro estados, es decir, bueno, malo, fallo y EOF. cin está en su estado bueno cuando se ejecuta el código anterior.

Hemos utilizado cin como condición de bucle. Cuando el código comience a ejecutarse, cin estará en un estado bueno y devolverá true.

Por lo tanto, el bucle while se ejecutará y pedirá al usuario que introduzca un valor para a.

Producción:

use while cin para tomar múltiples entradas hasta que el usuario ingrese algunos datos no válidos 2

Tan pronto como se ingresan los datos incorrectos, el bucle no se interrumpe inmediatamente, sino después de una iteración.

Una vez que el flujo de entrada estándar asociado con cin entra en un “estado de error”, no se pueden tomar más entradas hasta que el estado no se restablezca a “buen estado”. Podemos borrar el estado no válido de cin usando la función cin.clear() y la función cin.ignore(numeric_limits<streamsize>::max(), '\n') para borrar entrada no válida de la transmisión.

Esto nos permitirá retomar las entradas del usuario sin interrumpir la ejecución.

Muhammad Husnain avatar Muhammad Husnain avatar

Husnain is a professional Software Engineer and a researcher who loves to learn, build, write, and teach. Having worked various jobs in the IT industry, he especially enjoys finding ways to express complex ideas in simple ways through his content. In his free time, Husnain unwinds by thinking about tech fiction to solve problems around him.

LinkedIn

Artículo relacionado - C++ Loop