Namespaces
Variants

Input/output library

From cppreference.net

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 .

Contenidos

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:

cpp/io/ios base cpp/io/basic ios cpp/io/basic istream cpp/io/basic ifstream cpp/io/basic istringstream cpp/io/basic ostream cpp/io/basic ofstream cpp/io/basic ostringstream cpp/io/basic fstream cpp/io/basic stringstream cpp/io/basic iostream std-io-complete-inheritance.svg

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>
implementa un dispositivo de búfer de caracteres fijo sin formato
(plantilla de clase)
implementa operaciones de entrada de búfer de caracteres fijo
(plantilla de clase)
implementa operaciones de salida con búfer de caracteres fijo
(plantilla de clase)
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>
envoltura de dispositivo de salida sincronizada
(plantilla de clase)
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 :

Tipo Definición
Definido en el encabezado <ios>
std::ios std:: basic_ios < char >
std::wios std:: basic_ios < wchar_t >
Definido en el encabezado <streambuf>
std::streambuf std:: basic_streambuf < char >
std::wstreambuf std:: basic_streambuf < wchar_t >
Definido en el encabezado <istream>
std::istream std:: basic_istream < char >
std::wistream std:: basic_istream < wchar_t >
std::iostream std:: basic_iostream < char >
std::wiostream std:: basic_iostream < wchar_t >
Definido en el encabezado <ostream>
std::ostream std:: basic_ostream < char >
std::wostream std:: basic_ostream < wchar_t >
Definido en el encabezado <fstream>
std::filebuf std:: basic_filebuf < char >
std::wfilebuf std:: basic_filebuf < wchar_t >
std::ifstream std:: basic_ifstream < char >
std::wifstream std:: basic_ifstream < wchar_t >
std::ofstream std:: basic_ofstream < char >
std::wofstream std:: basic_ofstream < wchar_t >
std::fstream std:: basic_fstream < char >
std::wfstream std:: basic_fstream < wchar_t >
Definido en el encabezado <sstream>
std::stringbuf std:: basic_stringbuf < char >
std::wstringbuf std:: basic_stringbuf < wchar_t >
std::istringstream std:: basic_istringstream < char >
std::wistringstream std:: basic_istringstream < wchar_t >
std::ostringstream std:: basic_ostringstream < char >
std::wostringstream std:: basic_ostringstream < wchar_t >
std::stringstream std:: basic_stringstream < char >
std::wstringstream std:: basic_stringstream < wchar_t >
Definido en el encabezado <spanstream>
std::spanbuf (C++23) std:: basic_spanbuf < char >
std::wspanbuf (C++23) std:: basic_spanbuf < wchar_t >
std::ispanstream (C++23) std:: basic_ispanstream < char >
std::wispanstream (C++23) std:: basic_ispanstream < wchar_t >
std::ospanstream (C++23) std:: basic_ospanstream < char >
std::wospanstream (C++23) std:: basic_ospanstream < wchar_t >
std::spanstream (C++23) std:: basic_spanstream < char >
std::wspanstream (C++23) std:: basic_spanstream < wchar_t >
Definido en el encabezado <syncstream>
std::syncbuf (C++20) std:: basic_syncbuf < char >
std::wsyncbuf (C++20) std:: basic_syncbuf < wchar_t >
std::osyncstream (C++20) std:: basic_osyncstream < char >
std::wosyncstream (C++20) std:: basic_osyncstream < wchar_t >

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)
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>
genera representación formateada de los argumentos
(plantilla de función)
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)