BUSCAR
INDICE
INDICE DEL TEMA
OBJETIVOS
TEORIA
PALABRAS RESERVADAS
GLOSARIO
EJERCICIOS
RESUELTOS
AUTOEVALUACION
PROPUESTOS
ERRORES
ESTADISTICAS
INICIO
FAQS
LINKS
RECOMIENDANOS
QUIENES SOMOS
MAPA DEL WEB
COLABORAR
Tema 21 Entrada / Salida en C++
Teoría: Activar y deactivar indicadores

Para la activación de indicadores se pueden utilizar los métodos setf() y flags() de la clase ios. Se comenzará viendo la primera de ellas.

Los dos prototipos del método setf() son:

long setf(long indic);
long setf(long indic, long mask);

El valor de retorno de esta función es la configuración anterior (interesa disponer de ella al hacer algún cambio para poder volver a dicha configuración si se desea), e indic es el long que contiene los indicadores. En el segundo prototipo mask es uno de los tres indicadores combinación de otros (adjustfield, basefield y floatfield).

Se permite activar varios indicadores a la vez con el operador lógico OR binario. Ejemplo:

cout.setf(ios::showpoint | ios::fixed);

Es necesario determinar el flujo afectado (cout) y la clase en la que están definidos los indicadores (ios). Para desactivar los indicadores se utiliza la función unsetf() de modo similar a setf().

El segundo prototipo se debe utilizar para cambiar los indicadores que son exclusivos, como por ejemplo:

cout.setf(ios::left, ios::adjustfield);

que lo que hace es desactivar los tres bits que tienen que ver con la alineación y después activar el bit de alineación por la izquierda. En la forma,

cout.setf(0, ios::adjustfield);

pone los tres bits de alineación a cero.

La función flags() sin argumentos devuelve un long con la configuración de todos los indicadores. Su prototipo es:

long flags();

Existe otra definición de la función flags() cuyo valor de retorno es un long con la
configuración anterior, que permite cambiar todos los indicadores a la vez, pasando un long con la nueva configuración como argumento:

long flags(long indic);

donde indic contiene una descripción completa de la nueva configuración. El inconveniente de la función flags() es que establece una nueva configuración partiendo de cero, mientras que setf() simplemente modifica la configuración anterior manteniendo todo lo que no se ha cambiado explícitamente, por lo que debe ser considerada como una opción más segura.

Se presenta a continuación un ejemplo con todo lo citado hasta ahora:

// se mostrará el signo + para números positivos
cout.setf(ios::showpos);
// se mostrará el punto y no se utilizará notación científica
cout.setf(ios::showpoint | ios::fixed);
cout << 100.0;

que hace que se escriba por pantalla:

+100.000000