Ce code présente différentes valeurs (paramètres) que peut adopter le manipulateur setiosflags.
Chaque paramètre présenté est mis en situation afin de vous expliquer au mieu comment ils agissent.
Cette source,... ne sert absolument a rien mis a par le fait qu'elle essaye d'expliquer l'utilisation de
setiosflags et resetiosflags.
Source / Exemple :
/* Ce code montre divers paramètres pour setiosflags */
#include <iostream.h> // Pour cout
#include <iomanip.h> // Pour setiosflags et resetiosflags
void main ()
{
const caract_espacement = 0x0001; //Saute les caractères d'espacement
const align_gauche = 0x0002; // Affichage aligné a gauche
const align_droite = 0x0004; // Affichage aligné a droite
const format_interne = 0x0008; // Affichage au format interne
const base_10 = 0x0010; // Active la base de numération de base 10
const base_8 = 0x0020; // Active la base de numération de base 8
const base_16 = 0x0040; // Active la base de numération de base 16
const affich_base = 0x0080; // Affiche la base de numération
const point_decimal = 0x0100; // Affiche le point décimal
const majuscule = 0x0200; // Affichage en majuscule pour les préfixe hexa ou pour les exposants
const affich_signe_plus = 0x0400; // Affiche les nombres positif avec un +
const scientifique = 0x0800; // Affichage au format scientifique (virgule flottante)
const fixe = 0x1000; // Affichage au format fixe
const purge_tampon_es = 0x2000; // Vide la mémoire tampon Entrée/Sortie
const purge_tampon_es_1 = 0x4000; // Vide la mémoire tampon Entrée/Sortie (autre méthode)
cout << "------- Droite, Gauche, Interne -------\n\n";
/* Afin de pouvoir remarquer les effets des différentes valeur concernant l'affichage
nous utiliserons "setfill('*')" qui permet de remplacer chaque espace par une
"*" ainsi que "setw(10)" qui paramètre une valeur minimale pour la longeur de la chaine en
l'occurence une chaine de 10 caractères */
// Par défaut, l'affichage est positionné a droite. L'instruction suivante retourne : *******123
// l'affichage par défaut étant positionné a droite, l'instruction :
cout << setw(10) << setfill('*') << setiosflags(align_droite) << 123 << resetiosflags(align_droite);
cout << "\n";
// Resetiosflags remet en cause les spécifications de format établie par setiosflags
// donne la même chose que :
cout << setw(10) << setfill('*') << 123;
cout << "\n";
// positionner l'affichage a gauche
cout << setw(10) << setfill('*') << setiosflags(align_gauche) << 123 << resetiosflags(align_gauche);
cout << "\n";
// pour l'affichage interne (prenons un exemple avec le nombre 123 en hexadecimal)
cout << setw(10) << setfill('*') << setiosflags(format_interne) << setiosflags(affich_base) << hex << 123
<< resetiosflags(format_interne) << resetiosflags(affich_base);
cout << "\n";
cout << "\n------- Droite, Gauche, Interne -------\n";
// Pour afficher les base de numération c'est très simple
// pour la base hexadécimal
cout << "\n";
cout << "Afficher la base hexadecimal : " << hex << setiosflags(affich_base) << 123;
// pour la base octal
cout << "\n";
cout << "Afficher la base octal : " << oct << 123;
// pour la base décimale (aucune modification)
cout << "\n";
cout << "Afficher la base decimal (aucune modification) : " << dec << 123 << resetiosflags(affich_base);
/* pour l'affichage scientifique (nombre affiché avec un exposant sous la forme
D.ddde-n (D -> entier situé a gauche de la virgule / d -> nombre décimal situé a droite de
la virgule / e-n -> Exposant -n) */
cout << "\n";
cout << "Affichage scientifique : " << setiosflags(scientifique) << 123.456 << resetiosflags(scientifique);
// pour l'affichage fixe
cout << "\n";
cout << "Affichage fixe : " << setiosflags(fixe) << 123.456789 << resetiosflags(fixe);
cout << "\n";
/* pour forcer l'affichage du point décimal; le compilateur supprime automatiquement la virgule.
Lorsque l'on veut afficher 123.00 par l'instruction cout << 123.00 le resultat donne 123
Si vous voulez forcer l'affichage du point utilisez la méthode suivante */
cout << "Affichage du point decimal : " << setiosflags(point_decimal) << 123.00 << resetiosflags(point_decimal);
cout << "\n";
/* l'affichage de cette instruction donnera 123.000 un 3eme zero a été ajouté car le nombre
de chiffre en sortie par defaut est de 6 */
// pour afficher le signe + pour les nombre positif.
cout << "Affichage d'un entier positif avec son signe : " << setiosflags(affich_signe_plus) << 123 << resetiosflags(affich_signe_plus);
cout << "\n";
/* pour afficher le préfixe d'un nombre hexadécimal en majuscule ou encore l'exposant
de l'affichage scientifique. */
// pour la base hexadécimal
cout << "Affichage du prefixe hexadecimal en majuscule : " << setiosflags(affich_base) << setiosflags(majuscule) << hex << 123
<< resetiosflags(affich_base);
cout << "\n";
// pour les exposant
cout << "Affichage scientifique (Exp en majuscule) : " << setiosflags(scientifique) << dec << 123.456 << resetiosflags(scientifique) << resetiosflags(majuscule);
cout << "\n\n";
}
Conclusion :
Voila, j'espère que cette source vous aidera a y voir plus clair malgré que le sujet soit loin d'être compliqué.
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.