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:
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::getc
etc.