C ++ incluye dos bibliotecas de entrada / salida: una moderna biblioteca de E / S basada en flujo y el conjunto estándar de funciones de E / S de estilo C.

E / S basada en flujo

La biblioteca de entrada / salida basada en flujo está organizada en torno a dispositivos de entrada / salida abstractos. Estos dispositivos abstractos permiten que el mismo código maneje la entrada / salida de archivos, flujos de memoria o dispositivos adaptadores personalizados que realizan operaciones arbitrarias (por ejemplo, compresión) sobre la marcha.

La mayoría de las clases tienen plantillas, por lo que se pueden adaptar a cualquier tipo de carácter básico. Se proporcionan typedefs separados para los tipos de caracteres básicos 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-heritage.svg

Diagrama de herencia.

Abstracción
Definido en el encabezado <ios>
ios_base gestiona marcas de formato y excepciones de entrada / salida
(clase)
basic_ios gestiona un búfer de flujo arbitrario
(plantilla de clase)
Definido en el encabezado <streambuf>
basic_streambuf abstrae un dispositivo en bruto
(plantilla de clase)
Definido en el encabezado <ostream>
basic_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>
basic_istream envuelve un dispositivo abstracto dado (std::basic_streambuf)
y proporciona una interfaz de entrada de alto nivel
(plantilla de clase)
basic_iostream 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>
basic_filebuf implementa el dispositivo de archivo sin procesar
(plantilla de clase)
basic_ifstream implementa operaciones de entrada de flujo de archivos de alto nivel
(plantilla de clase)
basic_ofstream implementa operaciones de salida de flujo de archivos de alto nivel
(plantilla de clase)
basic_fstream implementa operaciones de entrada / salida de flujo de archivos de alto nivel
(plantilla de clase)
Implementación de cadenas de E / S
Definido en el encabezado <sstream>
basic_stringbuf implementa un dispositivo de cuerda sin procesar
(plantilla de clase)
basic_istringstream implementa operaciones de entrada de secuencia de cadenas de alto nivel
(plantilla de clase)
basic_ostringstream implementa operaciones de salida de secuencia de cadenas de alto nivel
(plantilla de clase)
basic_stringstream implementa operaciones de entrada / salida de secuencia de cadenas de alto nivel
(plantilla de clase)
Implementaciones de E / S de matriz
Definido en el encabezado <strstream>
strstreambuf
(obsoleto en C ++ 98)
implementa un dispositivo de matriz de caracteres en bruto
(clase)
istrstream
(obsoleto en C ++ 98)
implementa operaciones de entrada de matriz de caracteres
(clase)
ostrstream
(obsoleto en C ++ 98)
implementa operaciones de salida de matriz de caracteres
(clase)
strstream
(obsoleto en C ++ 98)
implementa operaciones de entrada / salida de matriz de caracteres
(clase)
Salida sincronizada
Definido en el encabezado <syncstream>
basic_syncbuf
(C ++ 20)
contenedor de dispositivo de salida sincronizado
(plantilla de clase)
basic_osyncstream
(C ++ 20)
envoltorio de flujo de salida sincronizado
(plantilla de clase)

Typedefs

Se proporcionan las siguientes definiciones de tipos para tipos de caracteres comunes:

typedef basic_ios<char>                ios;
typedef basic_ios<wchar_t>            wios;
 
typedef basic_streambuf<char>     streambuf;
typedef basic_streambuf<wchar_t> wstreambuf;
typedef basic_filebuf<char>         filebuf;
typedef basic_filebuf<wchar_t>     wfilebuf;
typedef basic_stringbuf<char>     stringbuf;
typedef basic_stringbuf<wchar_t> wstringbuf;
typedef basic_syncbuf<char>         syncbuf;
typedef basic_syncbuf<wchar_t>     wsyncbuf;
 
typedef basic_istream<char>         istream;
typedef basic_istream<wchar_t>     wistream;
typedef basic_ostream<char>         ostream;
typedef basic_ostream<wchar_t>     wostream;
typedef basic_iostream<char>       iostream;
typedef basic_iostream<wchar_t>   wiostream;
 
typedef basic_ifstream<char>       ifstream;
typedef basic_ifstream<wchar_t>   wifstream;
typedef basic_ofstream<char>       ofstream;
typedef basic_ofstream<wchar_t>   wofstream;
typedef basic_fstream<char>         fstream;
typedef basic_fstream<wchar_t>     wfstream;
 
typedef basic_istringstream<char>     istringstream;
typedef basic_istringstream<wchar_t> wistringstream;
typedef basic_ostringstream<char>     ostringstream;
typedef basic_ostringstream<wchar_t> wostringstream;
typedef basic_stringstream<char>       stringstream;
typedef basic_stringstream<wchar_t>   wstringstream;
 
typedef basic_osyncstream<char>     osyncstream;
typedef basic_osyncstream<wchar_t> wosyncstream;

Objetos de flujo estándar predefinidos

Definido en el encabezado <iostream>
cinwcin lee del flujo de entrada C estándar stdin
(objeto global)
coutwcout escribe en el flujo de salida C estándar stdout
(objeto global)
cerrwcerr escribe en el flujo de error estándar de C stderr, sin búfer
(objeto global)
obstruirwclog escribe en el flujo de error estándar de C stderr
(objeto global)

Manipuladores de E / S

La biblioteca de E / S basada en flujo utiliza manipuladores de E / S (p. Ej. std::boolalpha, std::hex, etc.) para controlar cómo se comportan las transmisiones.

Tipos

Se definen los siguientes tipos auxiliares:

Definido en el encabezado <ios>
streamoff representa la posición relativa del archivo / flujo (desplazamiento de fpos), suficiente para representar cualquier tamaño de archivo
(typedef)
tamaño de corriente 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)
fpos representa la posición absoluta en una secuencia o un archivo
(plantilla de clase)

Las siguientes especializaciones de std::fpos están provistos:

Definido en el encabezado <ios>
Escribe Definición
streampos std::fpos<std::char_traits<char>::state_type>
wstreampos std::fpos<std::char_traits<wchar_t>::state_type>

Interfaz de categoría de error

Definido en el encabezado <ios>
io_errc
(C ++ 11)
los códigos de error del flujo de E / S
(enumeración)
iostream_category
(C ++ 11)
identifica la categoría de error de iostream
(función)

IO estilo C

C ++ también incluye las funciones de entrada / salida definidas por C, como std::fopen, std::getcetc.