Interactuación con la consola de C++
Capítulo 9: La entrada de datos por consola
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.
// 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;
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.
// 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 << ".";
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 igualmente mal. Probemos el programa anterior con un nombre que tenga acento:
#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 << ".";
}
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 << ".";
}
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.
Comentarios
Si te quedan dudas sobre el temario, sobre C++, o cualquier otra cosa relacionada o simplemente quieres agradecer, aquí tienes tu sitio para dejar tu granito de arena. Gracias por tus comentarios y por darle vida a este sitio web.