Entrada / salida básica de C ++

Las bibliotecas estándar de C ++ proporcionan un amplio conjunto de capacidades de entrada / salida que veremos en los capítulos siguientes. Este capítulo discutirá las operaciones de E / S muy básicas y más comunes requeridas para la programación C ++.

La E / S de C ++ se produce en secuencias, que son secuencias de bytes. Si los bytes fluyen desde un dispositivo como un teclado, una unidad de disco o una conexión de red, etc.hacia la memoria principal, esto se denominainput operation y si los bytes fluyen desde la memoria principal a un dispositivo como una pantalla, una impresora, una unidad de disco o una conexión de red, etc., esto se denomina output operation.

Archivos de encabezado de biblioteca de E / S

Existen los siguientes archivos de encabezado importantes para los programas C ++:

No Señor Archivo de encabezado y función y descripción
1

<iostream>

Este archivo define el cin, cout, cerr y clog objetos, que corresponden al flujo de entrada estándar, el flujo de salida estándar, el flujo de error estándar sin búfer y el flujo de error estándar con búfer, respectivamente.

2

<iomanip>

Este archivo declara servicios útiles para realizar E / S formateadas con los denominados manipuladores de flujo parametrizados, como setw y setprecision.

3

<fstream>

Este archivo declara servicios para el procesamiento de archivos controlado por el usuario. Lo discutiremos en detalle en el capítulo relacionado con archivos y secuencias.

El flujo de salida estándar (cout)

El objeto predefinido cout es una instancia de ostreamclase. Se dice que el objeto cout está "conectado" al dispositivo de salida estándar, que normalmente es la pantalla de visualización. loscout se utiliza junto con el operador de inserción de flujo, que se escribe como << que son dos signos menos que, como se muestra en el siguiente ejemplo.

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

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

Value of str is : Hello C++

El compilador de C ++ también determina el tipo de datos de la variable que se va a generar y selecciona el operador de inserción de flujo apropiado para mostrar el valor. El operador << está sobrecargado para generar elementos de datos de tipos integrados enteros, flotantes, dobles, cadenas y valores de puntero.

El operador de inserción << puede usarse más de una vez en una sola declaración como se muestra arriba y endl se utiliza para agregar una nueva línea al final de la línea.

El flujo de entrada estándar (cin)

El objeto predefinido cin es una instancia de istreamclase. Se dice que el objeto cin está conectado al dispositivo de entrada estándar, que generalmente es el teclado. loscin se utiliza junto con el operador de extracción de flujo, que se escribe como >>, que son dos signos mayores que, como se muestra en el siguiente ejemplo.

#include <iostream>
 
using namespace std;
 
int main() {
   char name[50];
 
   cout << "Please enter your name: ";
   cin >> name;
   cout << "Your name is: " << name << endl;
 
}

Cuando el código anterior se compile y ejecute, le pedirá que ingrese un nombre. Ingresa un valor y luego presiona enter para ver el siguiente resultado:

Please enter your name: cplusplus
Your name is: cplusplus

El compilador de C ++ también determina el tipo de datos del valor ingresado y selecciona el operador de extracción de flujo apropiado para extraer el valor y almacenarlo en las variables dadas.

El operador de extracción de flujo >> puede usarse más de una vez en una sola declaración. Para solicitar más de un dato puede utilizar lo siguiente:

cin >> name >> age;

Esto será equivalente a las siguientes dos declaraciones:

cin >> name;
cin >> age;

La secuencia de errores estándar (cerr)

El objeto predefinido cerr es una instancia de ostreamclase. Se dice que el objeto cerr está adjunto al dispositivo de error estándar, que también es una pantalla de visualización, pero el objetocerr no está almacenado en búfer y cada inserción de flujo en cerr hace que su salida aparezca inmediatamente.

los cerr también se utiliza junto con el operador de inserción de flujo como se muestra en el siguiente ejemplo.

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

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

Error message : Unable to read....

El flujo de troncos estándar (obstrucción)

El objeto predefinido clog es una instancia de ostreamclase. Se dice que el objeto de obstrucción está conectado al dispositivo de error estándar, que también es una pantalla de visualización, pero el objetoclogestá almacenado en búfer. Esto significa que cada inserción que se obstruya podría hacer que su salida se mantenga en un búfer hasta que se llene o hasta que se vacíe.

los clog también se utiliza junto con el operador de inserción de flujo como se muestra en el siguiente ejemplo.

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

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

Error message : Unable to read....

No podría ver ninguna diferencia en cout, cerr y clog con estos pequeños ejemplos, pero al escribir y ejecutar grandes programas, la diferencia se vuelve obvia. Por lo tanto, es una buena práctica mostrar mensajes de error usando cerr stream y mientras se muestran otros mensajes de registro, se debe usar clog.