5.8.2. Campos de formateo

El segundo tipo de banderas de formateo trabajan en grupo. Solo una de estas banderas pueden ser activadas cada vez, como los botones de una vieja radio de coche - usted apretaba una y el resto saltaban. Desafortunadamente esto no pasa automáticamente, y usted tiene que poner atención a que bandera está activando para no llamar accidentalmente a la función setf() incorrecta. Por ejemplo, hay una bandera para cada una de las bases numéricas: hexadecimal, decimal y octal. A estas banderas se refiere en conjunto ios::basefield. Si la bandera ios::dec está activa y usted llama setf(ios::hex), usted activará la bandera de ios::hex, pero no desactivará la bandera de ios::dec, resultando en un comportamiento indeterminado. En vez de esto,llame a la segunda forma de la función setf() como esta: setf(ios::hex, ios::basefield) . Esta función primero limpia todos los bits de ios::basefield y luego activa ios::hex. Así, esta forma de setf() asegura que las otras banderas en el grupo 'saltan' cuando usted activa una. El manipulador ios::hex lo hace todo por usted, automáticamente, asi que no tiene que preocuparse con los detalles de la implementación interna de esta clase o tener cuidado de que esto es una seria de banderas binarias. Más adelante verá que hay manipuladores para proveer de la funcionalidad equivalente en todas las parts donde usted fuera a usar setf().

Aquí están los grupos de banderas y sus efectos:

ios::basefield

Efecto

ios::dec

Formatea valores enteros en base 10 (decimal)(Formateo por defecto - ningún prefijo es visible).

ios::hex

Formatea valores enteros en base 16 (hexadecimal).

ios::oct

Formatea valores enteros en base 8 (octal).

ios::floatfield

Efecto

ios::scientific

Muestra números en coma flotante en formato científico. El campo precisión indica el numero de dígitos después del punto decimal.

ios::fixed

Muestra números en coma flotante en formato fijado. El campo precisión indica en número de dígitos después del punto decimal.

'automatic' (Ninguno de los bits está activado).

El campo precisión indica el número total de dígitos significativos.

ios::adjustfield

Efecto

ios::left

Valores con alineación izquierda; se llena hasta la derecha con el carácter de relleno.

ios::right

Valores con alineación derecha; se llena hasta la izquierda con el carácter de relleno. Esta es la alineación por defecto.

ios::internal

Añade carácteres de relleno despues de algún signo inicial o indicador de base, pero antes del valor. (En otras palabras, el signo, si está presente, se justifica a la izquierda mientras el número se justifica a la derecha).