[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