[C con Clase] Setiosflags y resetiosflags

Programante programante en gmail.com
Mar Oct 9 15:24:28 CEST 2007


David Reza escribió:
>
>
>     > #include <iostream.h>
>     > #include <iomanip.h>
>     Es recomendable usar:
>     #include <iostream>
>     #include <iomanip>
>     using namespace std;
>
>
> Por qué es recomendable usar el namespace?
Las cabeceras <iostream> <iomanip> y en general las que no terminan en 
.h son las establecidas por el estándar ISO C++, por eso es preferible 
usarlas a la versión anterior <iostream.h>, <iomanip.h>...
Hay una diferencia y es que las nuevas añaden us funcionalidad dentro 
del namespace std. Por lo que tendrías que estar usando std:: delante de 
cada referencia a ellas: std::cout.setf(std::ios::hex, std::ios::basefield);
Poniendo "using namespace std;" te lo busca automáticamente en el 
espacio de nombres std y no necesitas poner std:: continuamente :-)

>  
>
>     Me parece que el problema está en que usas setiosflag con flags de un
>     subgrupo.
>     En lugar de setiosflags() usa  cout.setf(ios::oct, ios::basefield);
>     / cout.setf(ios::hex, ios::basefield); Su inversa es cout.unsetf ()
>
>
> Lo que pasa es que estoy viendo eso en la escuela y pues  la maestra 
> pide que utilicemos el setiosflags y resetiosflags, no creo que me 
> deje utilizar setf y unsetf. En todo caso, qué problema tiene el 
> utilizar flags de un subgrupo y a qué te refieres con eso?
Me refiero a que pertenecen a un grupo, no son flags independientes, 
como boolalpha o uppercase.
Te aconsejo que lo consultes con tu maestra. Si consigue solucionarlo, 
bien. Sino, te dejará usar setf y unsetf :-)

> Gracias por las otras respuestas que me quedaron claras, aunque me 
> surge la siguiente duda:
>
> Si uso el flag de octal, puedo usar después el flag de hexadecimal? Y 
> si después desactivo el flag hexadecimal me aparecerían los números en 
> octal?
>
> O para hacer todo eso sería necesario activar el octal, desactivar el 
> octal, activar el hexadecimal, desactivar el hexadecimal y por último 
> volver a activar el octal?
>
No lo sé. Prueba :-) Dependiendo de cómo esté implementado podría 
funcionar o no, aunque seguramente ISO C++ lo haya estandarizado.
Podría ser que cuando están activos octal y hexadecimal uno tenga 
prioridad sobre el otro, o que al activar uno desactive los demás.

> De nuevo muchas gracias y saludos





Más información sobre la lista de distribución Cconclase