[C con Clase] Setiosflags y resetiosflags
Programante
programante en gmail.com
Lun Oct 8 13:19:59 CEST 2007
David Reza escribió:
> Hola, alguien me podría ayudar con estos manipuladores? Ya he leído la
> información en la página pero no logro entenderle bien.
>
> En otra página había un ejemplo y se supone que el número que yo
> ingrese me tiene que salir en hexadecimal, octal y decimal pero
> siempre me sale el mismo numero que puse. Aquí está el ejemplo:
>
> #include <iostream.h>
> #include <iomanip.h>
Es recomendable usar:
#include <iostream>
#include <iomanip>
using namespace std;
>
> int main()
> {
> int numero;
>
> cout << "Introduzca un numero:\n";
> cin >> numero;
> cout << "El valor introducido en base 10 es: " << numero
> << endl;
> cout << setiosflags(ios::oct);
> cout << "en base octal es: " << numero << endl;
> cout << setiosflags(ios::hex);
> cout << "y en base hexadecimal es: " << numero << endl;
> cout << setiosflags(ios::uppercase|ios::showbase);
> cout << "utilizando los manipuladores uppercase y showbase"
> " el valor es: " << numero << endl;
> cout << resetiosflags(ios::hex);
> cout << "Ahora el valor se representa en base octal asi: "
> << numero << endl;
> cout << resetiosflags(ios::uppercase|ios::showbase|ios::oct);
> cout << setiosflags(ios::showpos|ios::showpoint|ios::fixed);
> cout << "Ahora el valor es: " << (float)numero << endl;
>
> cout << resetiosflags(ios::showpos|ios::showpoint|
> ios::fixed);
>
> cout << "El valor es " << numero << endl;
> cin.get();
> return 0;
> }
>
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()
> No entiendo que diferencia hay con un número si le pongo el flag fixed.
Especifica que los numeros deben estar en notacion de punto fijo (sin
exponente)
> No entiendo para qué sirve el resetiosflags.
Desactiva esas características (que habías activado con setiosflags).
Más información sobre la lista de distribución Cconclase