Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial programming >> Lenguaje C

Dominando flujos en C++: cout, cin, cerr, clog – Guía práctica

¿Qué son los flujos (streams) en C++?

C++ abstrae la entrada y salida mediante una familia de clases de flujo que transfieren datos como secuencias de bytes. Estos flujos son la columna vertebral de toda operación de E/S en el lenguaje.

Los flujos se dividen en dos categorías:

Tipos de flujos

Este tutorial cubrirá:

Cómo funcionan los flujos

El flujo típico de una operación de flujo en C++ es:

  1. Instanciar un objeto de flujo del tipo apropiado.
  2. Asociar el flujo con un dispositivo o archivo usando punteros get/put.
  3. Realizar E/S mediante los operadores de extracción (>>) o inserción (<<).

Visión general de funciones de flujo

La cabecera streambuf proporciona varias clases que gestionan búferes de archivo:

ClaseDescripción
filebufGestiona búferes de archivo para lectura/escritura. Proporciona open() y close().
fstreambaseBase para ifstream, fstream y ofstream – operaciones comunes de flujo de archivo.
ifstreamFlujo de entrada de archivo para leer datos.
ofstreamFlujo de salida de archivo para escribir datos.
fstreamFlujo combinado de entrada/salida.

Archivos de cabecera de C++ para E/S

Todos estos objetos están definidos en iostream; omitir la cabecera provoca error de compilación.

std::cout

El objeto cout escribe en el flujo de salida estándar, usualmente la consola. Se usa con el operador de inserción (<<).

Ejemplo

#include <iostream>
using namespace std;
int main() {
    char bienvenida[] = "Bienvenido a Guru99";
    cout << bienvenida << endl;
    return 0;
}

Salida:

Dominando flujos en C++: cout, cin, cerr, clog – Guía práctica

Recorrido del código:

  1. Incluya iostream para acceder a cout.
  2. Use el espacio de nombres std para evitar prefijos.
  3. Defina un array de caracteres con el mensaje.
  4. Imprima el mensaje con endl para insertar salto de línea.
  5. Retorne 0 para indicar éxito.

std::cin

El objeto cin lee del flujo de entrada estándar, típicamente el teclado. Se empareja con el operador de extracción (>>).

Ejemplo

#include <iostream>
using namespace std;
int main() {
    int numero;
    cout << "Ingrese un número:";
    cin >> numero;
    cout << "\nUsted ingresó: " << numero;
    return 0;
}

Salida:

Dominando flujos en C++: cout, cin, cerr, clog – Guía práctica

Explicación del código:

  1. Incluya iostream para cin y cout.
  2. Use espacio de nombres std.
  3. Declare variable entera.
  4. Solicite al usuario.
  5. Lea entrada con >>.
  6. Repita el valor ingresado.
  7. Retorne 0 en éxito.

std::cerr

El flujo cerr emite mensajes de error inmediatamente porque no está bufereado. Úselo para errores críticos que deben mostrarse al instante.

Ejemplo

#include <iostream>
using namespace std;
int main() {
    cerr << "¡Ocurrió un error!";
    return 0;
}

Salida:

Dominando flujos en C++: cout, cin, cerr, clog – Guía práctica

Explicación:

  1. Incluya iostream para cerr.
  2. Use espacio de nombres std.
  3. Imprima mensaje de error inmediatamente.
  4. Retorne 0.

std::clog

A diferencia de cerr, clog está bufereado, almacenando mensajes hasta que el búfer se vacía. Es útil para registro que puede retrasarse.

Ejemplo

#include <iostream>
using namespace std;
int main() {
    clog << "¡Ocurrió un error!";
    return 0;
}

Salida:

Dominando flujos en C++: cout, cin, cerr, clog – Guía práctica

Explicación:

  1. Incluya iostream para clog.
  2. Use espacio de nombres std.
  3. Escriba mensaje de error bufereado.
  4. Retorne 0.

Manejo de errores con objetos de flujo

Los flujos pueden evaluarse en contexto booleano para verificar su validez. Además, funciones miembro proporcionan comprobaciones de estado granulares:

Ejemplo – verificar apertura de archivo:

ifstream archivo("miarchivo.txt");
if (!archivo) {
    cout << "¡Archivo NO abierto!" << endl;
}

Ejemplo – validar entrada de usuario:

int p;
if (cin >> p) {
    cout << "Ingrese número válido" << endl;
}

Resumen

Lenguaje C

  1. Fundamentos de C#: Entrada y salida esenciales
  2. Dominando la Entrada y Salida en C++: Guía Práctica
  3. Dominando la entrada/salida en C: scanf() y printf() explicados
  4. Dominando switch-case en C++: Sintaxis, uso y ejemplos prácticos
  5. Manejo de excepciones en C++: Guía práctica con try, catch, throw
  6. Asignación dinámica de arrays en C++: Guía práctica con ejemplos de código
  7. Structs en C++ explicados con un ejemplo práctico
  8. Dominando Entrada y Salida en programación C
  9. Entendiendo C++: Sintaxis Básica y Fundamentos de la Programación Orientada a Objetos
  10. Dominando Latches D: Diseño, Operación y Diferencias Clave
  11. Dominar Entrada y Salida en Java: Imprimir, Leer y Formatear Datos