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).