# Entrada/sortida (C++)

En el llenguatge de programació C++, la biblioteca d'entrada/sortida fa referència a una família de plantilles de classe i funcions de suport a la biblioteca estàndard de C++ que implementen capacitats d'entrada/sortida basades en fluxos. És una alternativa orientada a objectes als fluxos basats en FILE de C de la biblioteca estàndard C.

## Història

Bjarne Stroustrup, el creador de C++, va escriure la primera versió de la biblioteca d'E/S de flux el 1984, com una alternativa segura i extensible a la biblioteca d'E/S de C. La biblioteca ha sofert una sèrie de millores des d'aquesta versió inicial, inclosa la introducció de manipuladors per controlar el format i la plantilla per permetre el seu ús amb tipus de caràcters diferents de char.

## Visió general

La majoria de les classes de la biblioteca són en realitat plantilles de classe molt generalitzades. Cada plantilla pot funcionar amb diversos tipus de caràcters, i fins i tot les operacions en si, com ara com es comparen dos caràcters per igualtat, es poden personalitzar. Tanmateix, la majoria del codi ha de fer operacions d'entrada i sortida utilitzant només un o dos tipus de caràcters, per tant, la majoria de vegades s'accedeix a la funcionalitat a través de diversos typedefs, que especifiquen noms per a les combinacions de plantilla i tipus de caràcter que s'utilitzen habitualment.

### Fitxers de capçalera

Les classes de la biblioteca d'entrada/sortida resideixen en diverses capçaleres.

### Buffers de flux

Hi ha dotze classes de buffer de flux definides en el llenguatge C++ com a taula.

## Classes de suport

ios_base i basic_ios són dues classes que gestionen els bits de nivell inferior d'un flux. ios_base emmagatzema informació de format i l'estat del flux. basic_ios gestiona el stream-buffer associat. basic_ios es coneix comunament com simplement ios o wios, que són dos tipus de definicions per basic_ios amb un tipus de caràcter específic. basic_ios i ios_base són molt poques vegades utilitzats directament pels programadors. Normalment, s'accedeix a la seva funcionalitat a través d'altres classes com iostream que les hereten.

### Fluxos d'entrada/sortida

Els fluxos d'entrada/sortida de C++ es defineixen principalment per iostream, un fitxer de capçalera que forma part de la biblioteca estàndard de C++ (el nom significa I nput/ Output Stream). En C++ i el seu predecessor, el llenguatge de programació C, no hi ha una sintaxi especial per a l'entrada o sortida de dades en streaming. En canvi, es combinen com una biblioteca de funcions. Igual que la capçalera cstdio heretada de stdio.h de C, iostream proporciona serveis bàsics d'entrada i sortida per a programes C++. iostream utilitza els objectes cin, cout, cerr i clog per enviar dades a i des dels fluxos estàndard d'entrada, sortida, error (sense búfer) i registre (emmagatzemat) respectivament. Com a part de la biblioteca estàndard de C++, aquests objectes formen part de l'espai de noms std.

## Referències

* ↑ Stanley B. Lippman, Josee Lajoie. C++ Primer (en anglès). third. Massachusetts: Addison-Wesley, 1999, p. 1109–1112. ISBN 0-201-82470-1.
* ↑ Bjarne Stroustrup. The C++ programming language (en anglès). third. Addison-Wesley, 1997, p. 637–640. ISBN 0-201-88954-4.
* ↑ Stanley B. Lippman, Josee Lajoie. C++ Primer (en anglès). third. Massachusetts: Addison-Wesley, 1999, p. 1063–1067. ISBN 0-201-82470-1.
* ↑ Bjarne Stroustrup. «A History of C++: 1979–1991» (en anglès).
* ↑ Stanley B. Lippman, Josee Lajoie. C++ Primer (en anglès). third. Massachusetts: Addison-Wesley, 1999, p. 1112–1120. ISBN 0-201-82470-1.
* ↑ «<ios> Visual Studio 2010» (en anglès). Microsoft MSDN: Visual Studio 2010. [Consulta: 28 setembre 2011].
* ↑ Holzner, Steven. C++ : Black Book (en anglès). Scottsdale, Ariz.: Coriolis Group, 2001, p. 584. ISBN 1-57610-777-9.