[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