C++ Entrada y salida básica

La biblioteca estándar de C++ proporciona un rico conjunto de funciones de entrada/salida, que presentaremos en capítulos posteriores. Este capítulo tratará las operaciones de I/O más básicas y comunes en la programación en C++.

Las operaciones de I/O en C++ ocurren en flujos, que son secuencias de bytes. Si el flujo de bytes fluye desde un dispositivo (como teclado, unidad de disco, conexión de red, etc.) hacia la memoria, se llamaoperación de entrada. Si el flujo de bytes fluye desde la memoria hacia un dispositivo (como pantalla, impresora, unidad de disco, conexión de red, etc.), se llamaoperación de salida。

Archivos de cabecera de la biblioteca I/O

Los siguientes archivos de cabecera son importantes en la programación en C++.

Archivo de cabeceraFunción y descripción
<iostream>Este archivo definecin、cout、cerryclogobjetos, que corresponden respectivamente al flujo de entrada estándar, al flujo de salida estándar, al flujo de error estándar no almacenado en búfer y al flujo de error estándar almacenado en búfer.
<iomanip>Este archivo, mediante los llamados manipuladores de flujo parametrizados (comosetwysetprecision), declara servicios útiles para realizar I/O estandarizada.
<fstream>Este archivo declara servicios para el manejo de archivos controlado por el usuario. Discutiremos sus detalles en el capítulo relacionado con archivos y flujos.

Flujo de salida estándar (cout)

Objeto predefinidocoutSíiostreamUna instancia de la clase. El objeto cout está 'conectado' al dispositivo de salida estándar, generalmente la pantalla.coutSe usa junto con el operador de inserción de flujo <<, como se muestra a continuación:

Ejemplo

#include <iostream> using namespace std; int main( ) { char str[] = "Hello C++"; cout << "Value of str is : " << str << endl; }

Cuando el código anterior se compila y ejecuta, produce el siguiente resultado:

Value of str is : Hello C++

El compilador de C++ selecciona el operador de inserción de flujo adecuado según el tipo de dato de la variable a mostrar. El operador << está sobrecargado para mostrar elementos de datos de tipos integrados (entero, coma flotante, double, cadena y puntero).

El operador de inserción de flujo << puede usarse varias veces en una misma sentencia, como se muestra en el ejemplo anterior,endlse utiliza para añadir un salto de línea al final de la línea.

Flujo de entrada estándar (cin)

Objeto predefinidocinSíiostreamUna instancia de la clase. El objeto cin está adjunto al dispositivo de entrada estándar, generalmente el teclado.cinSe usa junto con el operador de extracción de flujo >>, como se muestra a continuación:

Ejemplo

#include <iostream> using namespace std; int main( ) { char name[50]; cout << "Por favor, ingrese su nombre:"; cin >> name; cout << "Su nombre es:" << name << endl; }

Cuando el código anterior se compila y ejecuta, solicita al usuario que ingrese un nombre. Cuando el usuario ingresa un valor y presiona Enter, se verá el siguiente resultado:

请输入您的名称: cplusplus
您的名称是: cplusplus

El compilador de C++ selecciona el operador de extracción de flujo adecuado según el tipo de dato del valor a ingresar, extrae el valor y lo almacena en la variable dada.

El operador de extracción de flujo >> puede usarse varias veces en una misma sentencia. Si se requiere ingresar múltiples datos, se puede usar la siguiente sentencia:

cin >> name >> age;

Esto equivale a las dos sentencias siguientes:

cin >> name;
cin >> age;

Flujo de error estándar (cerr)

Objeto predefinidocerrSíiostreamUna instancia de la clase. El objeto cerr está adjunto al dispositivo de salida estándar, generalmente también la pantalla, perocerrel objeto no está almacenado en búfer, y cada inserción de flujo en cerr se emite inmediatamente.

cerrTambién se usa junto con el operador de inserción de flujo <<, como se muestra a continuación:

Ejemplo

#include <iostream> using namespace std; int main( ) { char str[] = "Unable to read...."; cerr << "Error message : " << str << endl; }

Cuando el código anterior se compila y ejecuta, produce el siguiente resultado:

Error message : Unable to read....

Flujo de registro estándar (clog)

Objeto predefinidoclogSíiostreamUna instancia de la clase. El objeto clog está adjunto al dispositivo de salida estándar, generalmente también la pantalla, peroclogel objeto está almacenado en búfer. Esto significa que cada inserción de flujo en clog se almacena primero en el búfer, y solo se emite cuando el búfer se llena o se vacía.

clogTambién se usa junto con el operador de inserción de flujo <<, como se muestra a continuación:

Ejemplo

#include <iostream> using namespace std; int main( ) { char str[] = "Unable to read...."; clog << "Error message : " << str << endl; }

Cuando el código anterior se compila y ejecuta, produce el siguiente resultado:

Error message : Unable to read....

A través de estos pequeños ejemplos, no podemos distinguir las diferencias entre cout, cerr y clog, pero al escribir y ejecutar programas grandes, las diferencias entre ellos se vuelven muy evidentes. Por lo tanto, las buenas prácticas de programación nos dicen que usemos el flujo cerr para mostrar mensajes de error, y para otros mensajes de registro usemos el flujo clog para la salida.


Otras extensiones