La entrada de datos por consola - Curso de C++ - Capítulo 9

Curso de c++ desde cero

En este capítulo te voy a enseñar a manejar la entrada de datos por parte del usuario en la consola.

La entrada de datos es un tema interesante, para que te hagas una idea, ¿Cómo harías para pedirle a un usuario varios números y que luego los sumara tu programa? Esto y mucho más es lo que puedes conseguir gracias a la entrada de datos.

Introducir datos en la consola de C++

Para poder introducir cosas desde la consola, vamos a utilizar una variable predefinida del lenguaje, cin y el operador de extracción >>.

Veamos un ejemplo. Voy a escribir un sencillo programa que le pida al usuario dos números los sume y le muestre el resultado. Una calculadora muy básica pero funcional.

Código C++

// Declaración de variables
int numero1;
int numero2;

// Se pide el primer número y se almacena
cout << "Introduce el primer número para sumar y pulsa ENTER." << endl;
cin >> numero1;

// Se pide el segundo número y se almacena
cout << "Introduce el segundo número para sumar y pulsa ENTER." << endl;
cin >> numero2;

// Se realiza la operación con los números del usuario y se imprime el resultado
int suma = numero1 + numero2;
cout << "El resultado es: " << suma;

terminal Resultado en la consola terminal

Primero, declaramos dos variables numéricas sin inicializar. No tienen valor almacenado, de momento.

Con un cout le digo al usuario en la consola lo que tiene que hacer. Con cin y el nombre de la variable, le decimos a C++ que queremos almacenar el valor que introduzca el usuario en la variable numero1. Lo mismo se hace con la segunda variable.

Finalmente, una variable que realiza la suma y un cout que le muestra el resultado final.

Introduce el primer número para sumar y pulsa ENTER.
75
Introduce el segundo número para sumar y pulsa ENTER.
50
El resultado es: 125

Para que entiendas mejor todo esto, en resumen, cout y << sirven para sacar cosas en la consola y cin y >> sirve para entrar datos en el programa. Salida y entrada, eso es todo.

Con los strings u otros tipos de datos podemos hacer lo mismo. Voy a crear un pequeño programa que pida el nombre y este se muestre en un mensaje.

Código C++

// Declaración de variables
string nombre;

// Se pide el nombre y se imprime
cout << "Introduce tu nombre y pulsa ENTER." << endl;
cin >> nombre;

// Se realiza la operación con los números del usuario y se imprimen
cout << "Buenos días " << nombre << ".";

terminal Resultado en la consola terminal

Introduce tu nombre y pulsa ENTER.
Enrique
Buenos días Enrique.

¿Cómo se pueden codificar los acentos en la entrada de datos de C++?

Hace unos capítulos te dije que para poder visualizar los acentos correctamente en la consola, tenías que importar #include <windows.h> y la siguiente línea, SetConsoleOutputCP(1252);

Con esto, nos funciona la codificación de caracteres para la salida, fíjate en el nombre que pone Console (consola) OutPut (salida). En el caso de la entrada, nos va a salir igualemente mal. Probemos el programa anterior con un nombre que tenga acento:

Código C++

#include <windows.h>
#include <iostream>
#include <string>

using namespace std;

int main()
{
	SetConsoleOutputCP(1252);

	// Declaración de variables
	string nombre;

	// Se pide el nombre y se imprime
	cout << "Introduce tu nombre y pulsa ENTER." << endl;
	cin >> nombre;

	// Se realiza la operación con los números del usuario y se imprimen
	cout << "Buenos días " << nombre << ".";
}

terminal Resultado en la consola terminal

Introduce tu nombre y pulsa ENTER.
Débora
Buenos días D‚bora.

La solución es muy fácil, hay que añadir una línea extra para la entrada de datos:

#include <windows.h>
#include <iostream>
#include <string>

using namespace std;

int main()
{
	// Codificación de entrada y salida
	SetConsoleCP(1252);
	SetConsoleOutputCP(1252);

	// Declaración de variables
	string nombre;

	// Se pide el nombre y se imprime
	cout << "Introduce tu nombre y pulsa ENTER." << endl;
	cin >> nombre;

	// Se realiza la operación con los números del usuario y se imprimen
	cout << "Buenos días " << nombre << ".";
}

terminal Resultado en la consola terminal

Ahora sí, ya no hay ningún problema. El nombre que se ha almacenado en la variable, lo ha hecho correctamente.

Introduce tu nombre y pulsa ENTER.
Débora
Buenos días Débora.