C++ Entrada/Salida básica: Ejemplo de Cout, Cin, Cerr

¿Qué son las corrientes en C++?

C++ proporciona a los usuarios una serie de bibliotecas que pueden utilizar para realizar tareas de entrada/salida. Estas tareas se realizan en forma de secuencias de bytes, llamadas popularmente flujos.

Las corrientes se dividen en dos:

tipos de corrientes

  • Flujo de entrada: Este es un tipo de flujo en el que los bytes fluyen desde un dispositivo como un teclado a la memoria principal.
  • Flujo de salida: Este es un tipo de flujo en el que los bytes fluyen en la dirección opuesta, es decir, desde la memoria principal y luego al dispositivo, como la pantalla de visualización.

¿Cómo funcionan las transmisiones?

C++ Las transmisiones funcionan de la siguiente manera:

  1. Primero, se inicializa una secuencia con el tipo correcto.
  2. A continuación deberá indicar dónde I / O ocurrirá usando punteros get/put.
  3. Después de llegar a la ubicación correcta en una secuencia, puede realizar tareas de entrada y salida utilizando los operadores >> y <<, respectivamente.

Tabla de funciones

Las siguientes son las funciones proporcionadas en el archivo de encabezado stream.h:

Clase Funciones
archivobuf Establece los buffers de archivos para lectura/escritura. Contiene funciones close() y open().
fstreambase Es la clase base para las clases ifstream, fstream y ofstream. Sus operaciones son comunes a las secuencias de archivos.
si corriente Es una clase de flujo de archivos de entrada para proporcionar operaciones de entrada.
fuera de corriente Es una clase de flujo de archivos de salida para proporcionar operaciones de salida.
corriente continua Es una clase de flujo de entrada/salida. Admite operaciones de entrada/salida simultáneas.

C++ Archivos de encabezado para entrada/salida

C++ proporciona tres bibliotecas que vienen con funciones para realizar tareas básicas de entrada/salida. Incluyen:

  • Yostream: Es un acrónimo de flujo de entrada/salida estándar. Este archivo de encabezado viene con definiciones para objetos como cin/cout/cerr.
  • Iomanip: Es un acrónimo de manipuladores de entrada/salida. La biblioteca viene con funciones que se pueden utilizar para la manipulación de transmisiones. Contiene definiciones para objetos como setw, setprecision y otros.
  • Corriente directa: Este es un archivo de encabezado para describir la secuencia del archivo. Maneja datos que se leen del archivo como entrada o que se escriben en un archivo, la salida.

Las palabras clave cin y cout son muy populares en C++. Se utilizan para tomar entradas e imprimir salidas, respectivamente. Para usarlos, debe incluir el archivo de encabezado iostream en su programa. La razón es que están definidos en ese archivo de encabezado. No incluir el archivo de encabezado iostream generará un error. Esto se debe a un fallo por parte del C++ compilador para comprender el significado de las palabras clave.

Los principales objetos definidos en el archivo de encabezado iostream son cin, cout, cerr y clog. Discutamos sobre ellos.

std :: cout

El objeto cout es una instancia de la clase iostream. Se utiliza para producir resultados en un dispositivo de salida estándar, que normalmente es la pantalla. Se usa junto con el operador de inserción de flujo (<<).

Ejemplo

#include <iostream>
using namespace std;
int main() {

	char welcome[] = "Welcome to Guru99";

	cout << welcome << endl;

	return 0;
}

Salida:

std :: cout

Aquí hay una captura de pantalla del código:

std :: cout

Explicación del código:

  1. Incluya el archivo de encabezado iostream donde se define el objeto cout.
  2. Incluya el espacio de nombres estándar para que no tengamos que llamarlo cuando usemos sus clases.
  3. Llame a la función principal(). El código del programa debe agregarse dentro de su cuerpo. La llave de apertura { marca el comienzo de su cuerpo.
  4. Cree una variable de carácter llamada bienvenido para contener la cadena Bienvenido a Guru99.
  5. Imprime el valor de la cadena bienvenido en la consola. El final es un C++ palabra clave que significa línea final. Mueve el cursor para comenzar a imprimir texto en la siguiente línea.
  6. El programa debe devolver valor tras una ejecución exitosa.
  7. Fin del cuerpo de la función main().

std :: cin

El objeto cin es una instancia de la clase istream. Lee la entrada desde el dispositivo de entrada, el teclado. Normalmente se utiliza junto con el operador de extracción (>>). El objeto de extracción es responsable de extraer los datos ingresados ​​a través del teclado del objeto cin.

Ejemplo

El siguiente ejemplo demuestra cómo utilizar la palabra clave cin en C++:

#include <iostream>
using namespace std;
int main()
{
	int number;

	cout << "Enter a number:";
	cin >> number;
	cout << "\nYou entered: " << number;

	return 0;
}

Salida:

std :: cin

Aquí hay una captura de pantalla del código:

std :: cin

Explicación del código:

  1. Incluya el archivo de encabezado iostream en nuestro programa. El objeto cin se define en este archivo de encabezado.
  2. Incluya el espacio de nombres estándar para usar sus clases. No tendrás que llamar a std cuando uses sus clases.
  3. Llame a la función principal(). El código del programa debe agregarse dentro de su cuerpo.
  4. El inicio del cuerpo del programa.
  5. Declarar un variable entera número nombrado.
  6. Imprima un mensaje en la pantalla solicitando al usuario que ingrese un número.
  7. Leer el valor ingresado por el usuario en la consola desde el teclado.
  8. Imprima el valor leído arriba en la consola junto con otro texto.
  9. El programa debería devolver un valor si se ejecuta correctamente.
  10. Fin del cuerpo de la función principal.

std :: cerr

El objeto cerr forma el flujo de error estándar para generar errores en C++Cerr es una instancia de la clase ostream. El objeto cerr no tiene búfer, lo que significa que se utiliza cuando se debe mostrar un mensaje de error de inmediato.

Dado que no tiene búfer, no almacena mensajes de error para visualizarlos más adelante. Se utiliza junto con el operador de inserción de flujo (<<).

Ejemplo

#include <iostream>
using namespace std;
int main() {

	cerr << "An Error occurred!";

	return 0;
}

Salida:

std :: cerr

Aquí hay una captura de pantalla del código:

std :: cerr

Explicación del código:

  1. Incluya el archivo de encabezado iostream donde se ha definido el objeto cerr.
  2. Incluya el espacio de nombres estándar para que no tengamos que llamarlo cuando usemos sus clases.
  3. Llame a la función principal(). La lógica del programa debe agregarse dentro de su cuerpo. La llave de apertura marca el comienzo del cuerpo de la función.
  4. Utilice el objeto cerr para imprimir un error en la consola.
  5. El programa debe devolver un valor tras una ejecución exitosa.
  6. Fin del cuerpo de la función principal.

std::obstruir

El objeto clog es una instancia de la clase ostream. Se utiliza para mostrar errores en la pantalla estándar, el monitor. Es similar al objeto cerr, pero está almacenado en el búfer. Como está almacenado en el búfer, almacena el mensaje de error en el búfer hasta que este se llena o vacía. Se utiliza junto con el operador de inserción de flujo (<<).

Ejemplo

#include <iostream>
using namespace std;
int main() {
	clog << "An Error occurred!";
	return 0;
}

Salida:

std::obstruir

Aquí hay una captura de pantalla del código:

std::obstruir

Explicación del código:

  1. Incluyendo el archivo de encabezado iostream en el que se define el objeto clog.
  2. Incluyendo el espacio de nombres estándar para que podamos usar sus clases sin llamarlo.
  3. Llamando a la función main(). La lógica del programa debe agregarse dentro de su cuerpo. El { marca el comienzo del cuerpo de la función.
  4. Utilice el objeto obstruir para imprimir un error en la salida estándar, el monitor.
  5. El programa debe devolver un valor al finalizar con éxito.
  6. El final del cuerpo de la función main().

Manejo de errores con transmisiones IO

Para comprobar si una secuencia es válida o no, puede utilizarla como booleana.

Aquí hay un ejemplo:

ifstream file( "myfile.txt" );
if ( ! file )
{
        cout << "File NOT opened!" << endl;
}

Para obtener más detalles sobre el estado de la transmisión, puede utilizar estas funciones:

  • good()- devolverá verdadero si todo está bien.
  • bad(): devolverá verdadero si ocurre un error fatal.
  • fail(): devolverá verdadero después de una operación de transmisión fallida.
  • eof()- devolverá verdadero si llega al final de un archivo.

Para saber si una operación de lectura/escritura en particular falló, pruebe el resultado de la lectura.

Por ejemplo, para comprobar si el usuario ingresó un número entero válido, haga esto:

int p;
if ( cin >> p ) 
{
        cout << "Enter valid number" << endl;
}

Resum

  • Las tareas de entrada y salida en C++ se realizan mediante secuencia de bytes. Los bytes se llaman flujos.
  • En un flujo de entrada, los bytes fluyen desde el dispositivo de entrada como un teclado hasta la memoria principal.
  • En un flujo de salida, los bytes de la memoria principal luego a un dispositivo de salida como un monitor.
  • El objeto cin es una instancia de la clase istream. Lee la entrada desde un dispositivo de entrada como el teclado.
  • El objeto cout es una instancia de la clase ostream. Produce salida en dispositivos de salida como el monitor.
  • El objeto cerr es una instancia de la clase ostream. Muestra objetos de error en el monitor.
  • El objeto clog es una instancia de la clase ostream. Muestra mensajes de error en los dispositivos de salida.
  • El objeto clog almacena en buffer los mensajes de error, mientras que el objeto cerr no lo hace.