Los streams (flujos) se utilizan para ejecutar operaciones de entrada y salida de datos.
En C++ el dispositivo de salida estándar es el monitor, y podemos acceder a él con el objeto de flujo cout (console out) y se utiliza el operador de inserción << para insertar los datos que se encuentran del lado derecho dentro del flujo que se encuentra a la izquierda del operador.
De este modo la sentencia:
cout << "Hola mundo!";
Despliega la cadena «hola mundo!» en el dispositivo predeterminado de salida (monitor) el operador de inserción indica el sentido en que se canaliza la información.
Concatenación
Entendemos como concatenación a la unión de 2 o más objetos en uno solo.
Por ejemplo, consideremos el siguiente programa:
// Concatenacion1.cpp // Se ilustra el concepto básico de concatenación // 2017, Por http://about.me/carlosgbr // Versión 1 // Compilado en https://www.tutorialspoint.com/compile_cpp_online.php #include <iostream> using namespace std; int main() { cout << "Esta es la cadena 1"; //Recuerda que cada sentencia termina con punto y coma cout << "Esta es la cadena 2"; cout << "Esta es la cadena 1" << "Esta es la cadena 2"; //Cadenas concatenadas return 0; }
Al ejecutar el programa obtenemos la siguiente salida.
Como puedes observar
cout << "Esta es la cadena 1"; //Recuerda que cada sentencia termina con punto y coma cout << "Esta es la cadena 2";
Este par de sentencias da como resultado un sola cadena de texto, esto es una concatenación que el compilador hace, si quisieras que estas cadenas de texto estuvieran separadas debes indicar explícitamente un salto de línea, más adelante veremos esto.
En la sentencia
cout << "Esta es la cadena 1" << "Esta es la cadena 2"; //Cadenas concatenadas
De forma explícita estamos concatenando (uniendo) 2 cadenas en una sola, de hecho podemos concatenar múltiples cadenas utilizando el operador de inserción, por ejemplo:
cout << "Esta es la cadena 1" << " " << "Esta es la cadena 2" << " " << "Esta es la cadena 3"; //Cadenas concatenadas
Observa que se añadieron espacios en blanco para mejorar la lectura entre cada cadena (<< » «<< ), te sugiero que vayas cambiando el código original con todos estos cambios y por su puesto es deseable que tú empieces a hacer cualquier cambio que se te ocurra, esa es la mejor manera de aprender: equivocándote y corrigiendo
printf()
Quienes haya programado en C estándar utilizan la función printf() para hacer lo que se hace en C++ con cout()
printf("Salida de texo con printf"); //Con esta función se muestra texto en pantalla en C estándar cout << endl; //añadimos un salto de línea cout << "Salida de texto con cout"; //En C++ utilizamos cout en lugar de printf()
Compila y ejecuta el código anterior y verás que aparentemente no hay diferencia entre una y otra, sin embargo si la hay, aunque en nivel básico no se vea. He mencionado la función printf() con el propósito de mencionar que muchos programadores de C++ que inician la utilizan y es importante mencionarlo desde el principio, su uso es una mala práctica y deberías abstenerte en utilizarla. Cuando requieras dar salida hacia el dispositivo estándar debes utilizar el objeto cout.
Como mencioné en la introducción, C++ soporta completamente el estándar de C, por tanto se soporta printf() y otras funciones muy arraigadas en programadores que llegan de C y solo deberías utilizar printf() por cuestiones de compatibilidad con C, lo cual no tiene sentido si estás aprendiendo C++
Resumen, siempre que veas printf() cámbialo por cout, aparte de ser más elegante, es más poderoso.
Modificando el comportamiento de cout
En su forma básica, cout() despliega lo que se le manda con los operadores de dirección
cout << "Desplegar texto"; // Muestra en pantalla "Desplegar texto" cout << 6; // Muestra en pantalla el número 6 cout << 2+3; // Muestra en pantalla el número 5 cout << "2+3"; // Muestra en pantalla "2+3" cout << "2+3 = " << 2+3; // Muestra en pantalla "2+3 = 5"
Cuando ejecutas este código obtienes,
es claro que no es la mejor forma de presentar la información en la pantalla, para separar cada línea podemos añadir un salto de línea, lo cual podemos hacer con la instrucción:
endl // «end line» inserta un salto de línea al final de la línea actual.
adecuando con endl, el código anterior tenemos:
// endl.cpp // Se ilustra el uso del identificador endl // 2017, Por http://about.me/carlosgbr // Versión 1 // Compilado en https://www.tutorialspoint.com/compile_cpp_online.php #include <iostream> using namespace std; int main() { cout << "Desplegar texto" << endl; // Muestra en pantalla "Desplegar texto" cout << 6 << endl; // Muestra en pantalla el número 6 cout << 2+3 << endl; // Muestra en pantalla el número 5 cout << "2+3" << endl; // Muestra en pantalla "2+3" cout << "2+3 = " << 2+3 << endl; // Muestra en pantalla "2+3 = 5" return 0; }
y nos dará la siguiente salida:
Como puedes observar, puedes utilizar endl para hacer más legible la salida de tus programas.
Secuencias de escape
Con el objeto cout también puedes utilizar unas secuencias de escape con el fin de manipular la forma en que presentas la información en la pantalla. Una secuencia de escape es un código que representa algunos de los caracteres no imprimibles y algunos imprimibles del teclado que suelen ser «complicados» de representar por características propias del lenguaje utilizado. Algunos de esos caracteres y su secuencia de escape son:
Secuencia de escape | Caracter |
\n | nueva línea |
\t | tabulación horizontal. |
\\ | Diagonal invertida |
\” | comillas dobles |
El siguiente programa ilustra el uso de secuencias de escape, y «la otra forma de hacerlo»,
// sescape.cpp // Se ilustra el uso de secuencias de escape // 2017, Por http://about.me/carlosgbr // Versión 1 // Compilado en https://www.tutorialspoint.com/compile_cpp_online.php// #include <iostream> using namespace std; int main() { // Representamos una pequeña lista de precios en la pantalla, para formatear la salida // utilizamos solo espacios y saltos de línea cout << """Lista de precios""" << endl << endl; //Texto con entrecomillado doble no funciona con todos los compiladores cout << "Producto Existencias Precio" << endl; cout << "Pinzas 5 $212.00" << endl; cout << "Martillo 3 $250.00" << endl; cout << "Caja de herramientas 4 $800.00" << endl; cout << "Desarmador 10 $25.00" << endl; // Representamos una pequeña lista de precios en la pantalla, para formatear la salida // utilizamos secuencias de escape cout << "\"Lista de precios\"" << "\n\n"; //Texto con entrecomillado doble cout << "Producto \t\t" << "Existencias\t\t" << "Precio" << "\n"; cout << "Pinzas\t\t\t\t" << "5\t\t" << "$212.00" "\n"; cout << "Martillo\t\t\t" << "3\t\t" << "$250.00" "\n"; cout << "Caja de herramientas\t\t" << "4\t\t" << "$800.00" "\n"; cout << "Desarmador\t\t\t" << "10\t\t" << "$25.00" "\n"; return 0; }
en principio parecerá más tedioso la forma utilizada con secuencias de escape, pero cuando ya estás programando, las secuencias de escape te darán la versatilidad que no tienes utilizando espacios como en la primera parte del ejercicio, de hecho las secuencias de escape te permiten generar gráficos sencillos en tiempo de ejecución, algo que no se puede lograr con puro espaciado.
No pierdas de vista:
- La secuencia de escape va dentro del entrecomillado de la cadena de texto, sino hay texto, las secuencias de escape se deben entrecomillar, en nuestro ejemplo se reemplazó el identificador endl por \n
- Puedes utilizar todas las secuencias de escape que requieras. aunque debes calcular muy bien las posiciones para que no se descuadre tu salida.
Vale la pena que practiques utilizando secuencias de escape, haz variaciones, experimenta
Si tienes alguna duda que no se responde en este documento, por favor plantea tu pregunta para poder responderte. O escribe directamente a soporte@ehack.mx
Referencias
- Por Roberto C. González para Ethical Hack
Fuente Imágenes
- «Todas las imágenes de esta sección»: by Nala Systems
Tutorial de C++ by eHack
- Volver al índice de temas del Tutorial de C++
- *** Durante todo este tutorial se repetirá: Este es un curso orientado a gente que nunca ha programado, incluso a gente ajena a la informática. Por esta razón el desarrollo puede parecer lento en ciertas etapas. Prefiero ser claro paso a paso, que hacer «pasos mágicos» como suele ocurrir cuando se enseña programación. *** También es buena idea leas esta entrada si te preguntas «Por qué C++»
Código Fuente
- El código fuente de toda la serie lo puedes descargar en nuestro repositorio en github busca los programas con el nombre del encabezado de cada programa.
- Código de esta sección
Streams: el objeto cout, por Roberto C. González. Se distribuye bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 4.0 Internacional.
©2025, Ethical Hack, Todos los derechos reservados sobre el contenido propio.