La definición de Iostream en C++

Jinku Hu 12 octubre 2023
La definición de Iostream en C++

Esta guía explica cómo utilizar la biblioteca básica de entrada / salida en C++.

Utilice el encabezado <iostream> para incluir objetos de flujo global en C++

La biblioteca de entrada / salida es la parte central de C++ STL utilizada por casi todos los programas del mundo real. Las operaciones de E / S de C++ se abstraen en forma de flujos, que pueden considerarse como secuencias de datos genéricas. Una abstracción de flujo se implementa utilizando múltiples clases heredadas y se expone al usuario como diferentes objetos con nombre especializados para ciertas operaciones de E / S. Tenga en cuenta que la biblioteca de E / S basada en flujo en su conjunto se puede utilizar para imprimir texto en la consola o leer / escribir datos de archivos en el disco. Puede pensar en la biblioteca de secuencias como el medio principal para que el programa C++ interactúe con el sistema de archivos y los dispositivos.

Las dos clases de flujo esenciales son istream y ostream, que corresponden a los flujos utilizados para leer y escribir los datos. Estas clases proporcionan operaciones sobre flujos de caracteres. Hay cuatro objetos de flujo global que los programas utilizan con frecuencia para realizar operaciones como tomar la entrada del usuario o imprimir los mensajes de error. Estos objetos son:

  • cout: representa un flujo de salida estándar correspondiente al stdout en C.
  • cin: es el flujo de entrada estándar (corresponde a stdin).
  • cerr: es el flujo de error estándar implementado como flujo sin búfer (corresponde a stderr).
  • clog: es el flujo de registro estándar que no tiene el equivalente en C y ofrece la versión en búfer de cerr.

Otra parte importante de la biblioteca de flujo de E / S son los operadores que se utilizan para encadenar las operaciones entre diferentes objetos. El operador <<, llamado operador de inserción de flujo, inserta los datos en un objeto de flujo. Por otro lado, el operador >> se conoce como extractor de flujo. Tenga en cuenta que estos operadores generalmente realizan operaciones de cambio en tipos aritméticos, pero en este caso se implementan como operadores sobrecargados.

En el siguiente ejemplo, le mostramos el uso básico de las clases de E / S basadas en flujo de C++. Usamos el objeto cout para enviar el contenido de la cadena a la consola. Dado que cout corresponde a un flujo de salida estándar, usamos el operador de inserción para insertar los datos y, por lo general, se imprimen en la consola. Observe que el objeto endl se llama manipulador que genera un carácter de nueva línea y vacía el búfer de salida.

Los manipuladores de flujo vienen en varios tipos, están los que modifican la entrada / salida como endl, y los hay que obligan al objeto de flujo a interpretar la entrada / salida de manera diferente. Los últimos incluyen los manipuladores de base numérica como: dec, hex y oct.

#include <iostream>
#include <string>

using std::cerr;
using std::cout;
using std::endl;
using std::string;

int main() {
  string str1("what does iostream mean?");

  cout << str1 << endl;
  cout << str1 << " - " << str1 << endl;

  return EXIT_SUCCESS;
}

Producción :

what does iostream mean?
what does iostream mean? - what does iostream mean?

Como se muestra en el programa anterior, la característica más poderosa de los objetos y operadores de flujo es encadenarse secuencialmente varias veces. En este caso, vemos que podemos combinar los valores literales con otras variables para empujarlas todas a un flujo cout. A continuación, empleamos los objetos cin y cerr para leer la entrada del usuario e imprimir los datos leídos.

Tenga en cuenta que el objeto del tipo que debe leerse debe declararse de antemano como el número flotante x. Otra propiedad útil de los operadores de inserción / extracción es que devuelven un valor distinto de cero si la operación falla. Alternativamente, puede usar las funciones miembro fail y bad para verificar si el objeto de flujo dado encontró errores específicos.

#include <iostream>
#include <string>

using std::cerr;
using std::cin;
using std::cout;
using std::endl;
using std::string;

int main() {
  float x;

  cout << "enter float: ";
  if (!(cin >> x)) {
    cerr << "error while reading the floating point value!" << endl;
    return EXIT_FAILURE;
  }
  cout << x;

  return EXIT_SUCCESS;
}

Producción :

error while reading the floating point value!
Autor: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

Artículo relacionado - C++ IO