Manipulateurs de flux

Manipulateurs de flux

La librairie standard définit tout un jeu de manipulateurs extrêmement utiles pour définir les options de formatage et pour effectuer des opérations de base sur les flux. Le symbole endl, par exemple, utilisé pour effectuer un retour à la ligne dans les opérations d’écriture sur les flux de sortie n’est rien d’autre qu’un manipulateur. Son rôle consiste simplement à écrire le caractère de retour à la ligne et à appeler la méthode flush() du flux de sortie (méthode qui déclenche le transfert du contenu du flux).

Les manipulateurs sont définis, selon leur type, soit dans l’en-tête de déclaration du flux, soit dans l’en-tête ios, soit dans l’en-tête iomanipxe "iomanip".

Le tableau 2.3 présente les manipulateurs les plus simples qui ne prennent pas de paramètre.

Tableau 2.3 : manipulateurs des flux de sortie

Manipulateur Description
endl Envoie un caractère de retour à la ligne sur le flux et synchronise le tampon par un appel à la méthode flush()
ends Envoie un caractère nul terminal de fin de ligne sur le flux
flush Synchronise le tampon utilisé par le flux par un appel à la méthode flush()
boolalpha Affiche les booléens sous forme textuelle
noboolalpha Désactive l’affichage en mode texte des booléens
hex Formate les nombres en base 16
oct Formate les nombres en base 8
dec Formate les nombres en base 10
fixed Utilise la notation en virgule fixe pour les nombres à virgule
scientific Utilise la notation en virgule flottante pour les nombres à virgule
left Aligne les résultats à gauche
right Aligne les résultats à droite
internal Complète la représentation de la variable avec des espaces complémentaires à une position fixe déterminée par la locale courante. Si cette dernière ne spécifie aucune position de remplissage particulière, le remplissage s’effectue à droite par défaut
showbasexe Indique la base de calcul utilisée
noshowbase N’indique pas la base de calcul utilisée
showpoint Utilise le séparateur de virgule dans les nombres à virgule, même si la partie fractionnaire est nulle
noshowpoint N’utilise le séparateur de virgule que si la partie fractionnaire des nombres flottants est significative
showpos Écrit systématiquement le signe des nombres, même s’ils sont positifs
noshowpos N’écrit le signe des nombres que s’ils sont négatifs
uppercase Écrit les exposants et les chiffres hexadécimaux en majuscules
nouppercase Écrit les exposants et les chiffres hexadécimaux en minuscules
unitbuf Effectue une opération de synchronisation du cache géré par le tampon du flux après chaque écriture
nounitbuf N’effectue les opérations de synchronisation du cache géré par le tampon du flux que lorsque cela est explicitement demandé

Code 2.7 : utilisation des manipulateurs sur un flux de sortie

#include <iostream>     
#include <iomanip>     

using namespace std;     

int main()     
{     
  cout << "On affiche le booléen true sous forme textuelle: tt";     
  cout << boolalpha << true << endl;     
  cout << "On repasse en mode binaire pour ";     
  cout << "afficher le booléen false: t";     
  cout << noboolalpha << false << endl;     
  cout << "Hex permet aussi d’afficher les booléens ";     
  cout << "en mode binaire: t";     
  cout << hex << false << endl;     
  cout << "On écrit le nombre 63 en hexadécimal: tttt";     
  cout << hex << 63 << endl;     
  cout << "En majuscules: ttttttt";     
  cout << uppercase << 63 << endl;     
  cout << "On repasse en base 10 pour afficher 63: ttt";     
  cout << dec << 63 << endl;     
  cout << "Avec le signe: ttttttt";     
  cout << showpos << 63 << endl;     
  cout << "On affiche un flottant sur 15 caractères minimum, n";     
  cout << "en remplissant les vides avec des *: ttt";     
  cout << setfill(‘*’) << setw(15) << 3.151592 << endl;     
  cout << "On recommence avec un alignement à gauche,n";     
  cout << "sans le signe: tttttt";     
  cout << left << noshowpos << setw(15) << 3.151592 << endl;     
}    


L’exécution de ce programme donne le résultat suivant :

On affiche le booléen true sous forme textuelle:        true     
On repasse en mode binaire pour afficher le booléen false: 0     
Hex permet aussi d’afficher les booléens en mode binaire:  0     
On écrit le nombre 63 en hexadécimal:                     3f     
En majuscules:                                            3F     
On repasse en base 10 pour afficher 63:                   63     
Avec le signe:                                           +63     
On affiche un flottant sur 15 caractères minimum,      
en remplissant les vides avec des *:        ********+3.15159     
On recommence avec un alignement à gauche,     
sans le signe:                                        3.15159********
Bouton "J'aime" de Facebook
 
Partager sur Facebook
 
 
This website was created for free with Own-Free-Website.com. Would you also like to have your own website?
Sign up for free