Input/output library
C++ incluye las siguientes bibliotecas de entrada/salida: una biblioteca de E/S basada en flujos de estilo OOP , familia de funciones basadas en impresión (desde C++23) , y el conjunto estándar de funciones de E/S estilo C .
E/S Basada en Flujos
La biblioteca de entrada/salida basada en flujos está organizada alrededor de dispositivos abstractos de entrada/salida. Estos dispositivos abstractos permiten que el mismo código maneje entrada/salida hacia archivos, flujos de memoria, o dispositivos adaptadores personalizados que realizan operaciones arbitrarias (ej. compresión) sobre la marcha.
La mayoría de las clases están basadas en plantillas, por lo que pueden adaptarse a cualquier tipo de carácter básico. Se proporcionan typedefs separados para los tipos de carácter básico más comunes ( char y wchar_t ). Las clases están organizadas en la siguiente jerarquía:
Diagrama de herencia
Abstracción |
|
|
Definido en el encabezado
<ios>
|
|
|
gestiona banderas de formato y excepciones de entrada/salida
(clase) |
|
|
gestiona un búfer de flujo arbitrario
(plantilla de clase) |
|
|
Definido en el encabezado
<streambuf>
|
|
|
abstrae un dispositivo crudo
(plantilla de clase) |
|
|
Definido en el encabezado
<ostream>
|
|
|
envuelve un dispositivo abstracto dado (
std::basic_streambuf
)
y proporciona una interfaz de salida de alto nivel (plantilla de clase) |
|
|
Definido en el encabezado
<istream>
|
|
|
envuelve un dispositivo abstracto dado (
std::basic_streambuf
)
y proporciona una interfaz de entrada de alto nivel (plantilla de clase) |
|
|
envuelve un dispositivo abstracto dado (
std::basic_streambuf
)
y proporciona una interfaz de entrada/salida de alto nivel (plantilla de clase) |
|
Implementación de E/S de archivos |
|
|
Definido en el encabezado
<fstream>
|
|
|
implementa dispositivo de archivo sin formato
(plantilla de clase) |
|
|
implementa operaciones de entrada de flujo de archivos de alto nivel
(plantilla de clase) |
|
|
implementa operaciones de salida de flujo de archivos de alto nivel
(plantilla de clase) |
|
|
implementa operaciones de entrada/salida de flujo de archivos de alto nivel
(plantilla de clase) |
|
Implementación de E/S de cadenas |
|
|
Definido en el encabezado
<sstream>
|
|
|
implementa dispositivo de cadena sin formato
(plantilla de clase) |
|
|
implementa operaciones de entrada de flujo de cadena de alto nivel
(plantilla de clase) |
|
|
implementa operaciones de salida de flujo de cadena de alto nivel
(plantilla de clase) |
|
|
implementa operaciones de entrada/salida de flujo de cadena de alto nivel
(plantilla de clase) |
|
Implementaciones de E/S de Array |
|
|
Definido en el encabezado
<spanstream>
|
|
|
(C++23)
|
implementa un dispositivo de búfer de caracteres fijo sin formato
(plantilla de clase) |
|
(C++23)
|
implementa operaciones de entrada de búfer de caracteres fijo
(plantilla de clase) |
|
(C++23)
|
implementa operaciones de salida con búfer de caracteres fijo
(plantilla de clase) |
|
(C++23)
|
implementa operaciones de entrada/salida con búfer de caracteres fijo
(plantilla de clase) |
|
Definido en el encabezado
<strstream>
|
|
|
(obsoleto en C++98)
(eliminado en C++26)
|
implementa dispositivo de array de caracteres sin formato
(clase) |
|
(obsoleto en C++98)
(eliminado en C++26)
|
implementa operaciones de entrada de arreglos de caracteres
(clase) |
|
(obsoleto en C++98)
(eliminado en C++26)
|
implementa operaciones de salida de arreglos de caracteres
(clase) |
|
(deprecated in C++98)
(removed in C++26)
|
implementa operaciones de entrada/salida con arrays de caracteres
(clase) |
Salida sincronizada (since C++20) |
|
|
Definido en el encabezado
<syncstream>
|
|
|
(C++20)
|
envoltura de dispositivo de salida sincronizada
(plantilla de clase) |
|
(C++20)
|
envoltura de flujo de salida sincronizado
(plantilla de clase) |
Typedefs
Las siguientes definiciones de tipos para tipos de caracteres comunes se proporcionan en el espacio de nombres
std
:
Objetos de flujo estándar predefinidos
|
Definido en el encabezado
<iostream>
|
|
|
lee del flujo de entrada estándar de C
stdin
(objeto global) |
|
|
escribe al flujo de salida estándar de C
stdout
(objeto global) |
|
|
escribe al flujo de error estándar de C
stderr
, sin búfer
(objeto global) |
|
|
escribe al flujo de error estándar de C
stderr
(objeto global) |
|
Manipuladores de E/S
La biblioteca de E/S basada en flujos utiliza manipuladores de E/S (por ejemplo, std::boolalpha , std::hex , etc.) para controlar el comportamiento de los flujos.
Tipos
Se definen los siguientes tipos auxiliares:
|
Definido en el encabezado
<ios>
|
|
|
representa la posición relativa de archivo/flujo (desplazamiento desde fpos), suficiente para representar cualquier tamaño de archivo
(typedef) |
|
|
representa el número de caracteres transferidos en una operación de E/S o el tamaño de un búfer de E/S
(typedef) |
|
|
representa posición absoluta en un flujo o archivo
(class template) |
|
Se proporcionan los siguientes nombres typedef para std:: fpos < std:: mbstate_t > :
|
Definido en el encabezado
<iosfwd>
|
|
| Tipo | Definición |
std::streampos
|
std:: fpos < std:: char_traits < char > :: state_type > |
std::wstreampos
|
std:: fpos < std:: char_traits < wchar_t > :: state_type > |
std::u8streampos
(C++20)
|
std:: fpos < std:: char_traits < char8_t > :: state_type > |
std::u16streampos
(C++11)
|
std:: fpos < std:: char_traits < char16_t > :: state_type > |
std::u32streampos
(C++11)
|
std:: fpos < std:: char_traits < char32_t > :: state_type > |
Interfaz de categoría de error (desde C++11)
|
Definido en el encabezado
<ios>
|
|
|
(C++11)
|
los códigos de error de flujo de E/S
(enum) |
|
(C++11)
|
identifica la categoría de error de iostream
(función) |
Funciones de impresión (desde C++23)
Las funciones de la familia print con soporte Unicode que realizan E/S formateada en texto que ya está formateado. Ofrecen todos los beneficios de rendimiento de std::format , son independientes de la configuración regional por defecto, reducen el estado global, evitan la asignación de un objeto temporal std::string y la llamada a operator << , y en general hacen que el formateo sea más eficiente en comparación con iostreams y stdio .
Se proporcionan las siguientes funciones similares a impresión:
|
Definido en el encabezado
<print>
|
|
|
(C++23)
|
imprime en
stdout
o un flujo de archivo usando representación
formateada
de los argumentos
(plantilla de función) |
|
(C++23)
|
igual que
std::print
excepto que cada impresión termina con una nueva línea adicional
(plantilla de función) |
|
imprime en
stdout
o un flujo de archivo compatible con Unicode usando representación de argumentos con
borrado de tipo
(función) |
|
|
imprime en
stdout
o un flujo de archivo usando representación de argumentos con
borrado de tipo
(función) |
|
|
Definido en el encabezado
<ostream>
|
|
|
(C++23)
|
genera representación
formateada
de los argumentos
(plantilla de función) |
|
(C++23)
|
genera representación
formateada
de los argumentos con
'
\n
'
añadido
(plantilla de función) |
E/S estilo C
C++ también incluye las funciones de entrada/salida definidas por C , como std::fopen , std::getc , etc.
Véase también
| Biblioteca del sistema de archivos (desde C++17) |