Setiosflags et resetiosflags

Description

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é.

Codes Sources

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.