Entrada/Salida con formato

La plantilla de clase basic_ios derivada de la clase ios_base proporciona el control sobre los aspectos de cómo se produce la E/S. Para utilizar esta funcionalidad  en una aplicación basta con incluir el fichero de cabecera iostream, a través del cual se incluye tanto la funcionalidad proporcionada como la de basic_istream y basic_ostream. Por ejemplo:

formato_1

Observamos que se han realizado dos operaciones justo antes de otra operación de salida. Existe una gran variedad de operaciones que en ocasiones será interesante realizar justo antes o después de una operación de E/S. Los manipuladores que las permiten se encuentran en el espacio de nombres std y los hay sin parámetros (como hex) y con ellos (como setw). Muchos de ellos localizados en los ficheros de cabecera iostream (incluyen istream y ostream) e iomanip que resumimos a continuación:

El resultado sería:

formato_1_salida

Desglosando:

formato_2_salida

Si queremos establecer u obtener la base, el tipo de alineación, o el tipo de representación, ios:base define las siguientes constantes:

ios_base_1

Un ejemplo, para verificar si el tipo de alineación es a la izquierda, podemos escribir:

ios_base_2

 El método flags sobre un flujo devuelve un valor que corresponde al conjunto de opciones establecidas en dicho flujo.

Sin embargo, para facilitar las operaciones de E/S con formato, la biblioteca estándar nos ofrece un conjunto de indicadores de manipulación del estado de un flujo que cubren totalmente la funcionalidad a la que nos hemos referido anteriormente. Los indicadores también son conocidos como manipuladores y son insertados directamente en la lista de expresiones de E/S cuya finalidad es ejecutar determinadas acciones sobre las operaciones de E/S. Por ejemplo:

ios_base_3

La salida es:

ios_basic_3_salida

Desglosando:

ios_basic_4_salida

Vemos que se han realizado dos operaciones justamente antes que la otra operación de salida. Existe una gran variedad de operaciones que en ocasiones será interesante realizar justamente antes o despues de una operación de E/S. Los manipuladores que las permiten se encuentran en el espacio de nombres std y los hay sin parámetros como hex o con parámetros como setw. Muchos de ellos, localizados en los ficheros de cabecera iostream (istream y ostream) e iomanip, se resumen a continuación:

 manipulador_tabla

 Veamos un ejemplo que nos ayudará a clarificar un poco lo visto hasta ahora:

formato3_listado

Al compilar y ejecutar el programa obtenemos unos resultados como estos:

formato3

Veamos la explicación del proceso:

  1. manipuladores_1
  2. manipuladores_2
  3. manipuladores_3
  4. manipuladores_4
  5. manipuladores_5
  6. manipuladores_6
  7. manipuladores_7

Este otro ejemplo nos ilustra cómo se utilizan los indicadores de formato a través de setiosflags. El resultado que queremos obtener es el siguiente:

formato_salida_1

Tanto los nombres de las provincias como su coeficientes asociados estarán almacenadas en sendas matrices que estudiaremos más adelante:

formato_listado_1

La sentencia for, que estudiaremos más adelante, tiene como misión ejecutar la sentencia de salida tantas veces como elementos hemos almacenado en las matrices.

Podemos especificar como argumento de setiosflags varios indicadores de formato unidos por el operador or (|).

atras2

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s