Apéndice E Streams

Las operaciones de entrada y salida nunca formaron parte de C ni tampoco lo forman de C++. En ambos lenguajes, todas las operaciones de entrada y salida se hacen mediante bibliotecas externas.

En el caso de C, esa biblioteca es stdio, que agrupa todas las funciones de entrada y salida desde teclado, pantalla y ficheros de disco. En el caso de C++ se dispone de varias clases: streambuf, ios, istream, ostream y fstream.

Dejar fuera del lenguaje todas las operaciones de entrada y salida tiene varias ventajas:

  1. Independencia de la plataforma: cada compilador dispone de diferentes versiones de cada biblioteca para cada plataforma. Tan sólo se cambia la definición de las clases y bibliotecas, pero la estructura, parámetros y valores de retorno son iguales. Los mismos programas, compilados para diferentes plataformas funcionan del mismo modo.
  2. Encapsulación: para el programa todos los dispositivos son de entrada y salida se tratan del mismo modo, es indiferente usar la pantalla, el teclado o ficheros.
  3. Buffering: el acceso a dispositivos físicos es lento, en comparación con el acceso a memoria. Las operaciones de lectura y escritura se agrupan, haciéndolas en memoria, y las operaciones físicas se hacen por grupos o bloques, lo cual ahorra mucho tiempo.

Clases predefinidas para streams

Un stream es una abstracción para referirse a cualquier flujo de datos entre una fuente y un destinatario. Los streams se encargan de convertir cualquier tipo de objeto a texto legible por el usuario, y viceversa. Pero no se limitan a eso, también pueden hacer manipulaciones binarias de los objetos y cambiar la apariencia y el formato en que se muestra la salida.

C++ declara varias clases estándar para el manejo de streams:

  • streambuf: manipulación de buffers.
  • ios: entradas y salidas, incluye en su definición un objeto de la clase streambuf.
  • istream: derivada de ios, clase especializada en entradas.
  • ostream: derivada de ios, clase especializada en salidas.
  • iostream: derivada de istream y ostream, se encarga de encapsular las funciones de entrada y salida por teclado y pantalla.
  • fstream: entrada y salida desde ficheros.

Las clases base son streambuf e ios, las demás se derivan de estas dos.

La clase streambuf proporciona un interfaz entre la memoria y los dispositivos físicos.

streambuf
streambuf

La clase ios contiene además un puntero a un objeto de la clase streambuf. Proporciona soporte para entradas y salidas con validación y formato usando un streambuf.

ios
ios

Comentarios de los usuarios (1)

Daniel Lazarinos
2014-09-23 08:14:40

Hola a todos, existe un video de como compilar e instalar la Libreria NTL sobre CodeBlocks para Windows, ya que nos permite trabajar con numeros inmensos en el tema de algoritmos de encriptacion,donde se nesecitan claves de numeros enteros muy grandes.

https://www.youtube.com/watch?v=LAHc1oy2lQI