ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Ciencias Y Letras


Enviado por   •  10 de Junio de 2014  •  623 Palabras (3 Páginas)  •  239 Visitas

Página 1 de 3

Almacenamiento de iostream

Las buenas prácticas de diseño dictan que, cuando cree una nueva clase, debe esforzarse en ocultar los detalles de la implementación subyacente tanto como sea posible al usuario de la clase. Usted le muestra solo aquello que necesita conocer y el resto se hace privado para evitar confusiones. Cuando usamos insertadores y extractores, normalmente usted no conoce o tiene cuidado con los bytes que se consumen o se producen, ya que usted está tratando con E/S estándar, ficheros, memoria, o alguna nueva clase o dispositivo creado.

Llega un momento, no obstante, en el que es importante comunicar con la parte del iostream que produce o consume bytes. Para proveer esta parte con una interfaz común y esconder todavía su implementación subyacente, la librería estándar la abstrae dentro de su clase, llamada streambuf. Cada objeto iostream contiene un puntero a alguna clase de streambuf. (El tipo depende de que se esté tratando con E/S estándar, ficheros, memoria, etc.). Puede acceder al streambuf directamente; por ejemplo, puede mover bytes sin formatear dentro y fuera del streambuf sin formatearlos a través de la encapsulación del iostream. Esto es posible llamando a las funciones miembro del objeto streambuf.

Actualmente, la cosa más importante que debe conocer es que cada objeto iostream contiene un puntero a un objeto streambuf, y el objeto streambuf tiene algunas funciones miembro que puede llamar si es necesario. Para ficheros y streams de string, hay tipos especializados de buffers de stream, como ilustra la figura siguiente:

Para permitirle el acceso al streambuf, cada objeto iostream tiene una función miembro llamada rdbuf() que retorna el puntero a un objeto streambuf. De esta manera usted puede llamar cualquier función miembro del streambuf subyacente. No obstante, una de las cosas más interesantes que usted puede hacer con el puntero al streambuf es conectarlo con otro objeto iostream usando el operador <<. Esto inserta todos los carácteres del objeto dentro del que está al lado izquierdo del <<. Si quiere mover todos los carácteres de un iostream a otro, no necesita ponerse con el tedioso (y potencialmente inclinado a errores de código) proceso de leer de carácter por carácter o línea por línea. Este es un acercamiento mucho más elegante.

Aquí está un programa muy simple que abre un fichero y manda el contenido a la salida estándar (similar al ejemplo previo):

//: C04:Stype.cpp

// Type a file to standard output.

#include <fstream>

#include <iostream>

#include "../require.h"

using namespace std;

int

...

Descargar como (para miembros actualizados)  txt (3.9 Kb)  
Leer 2 páginas más »
Disponible sólo en Clubensayos.com