FAQ C++Consultez toutes les FAQ
Nombre d'auteurs : 34, nombre de questions : 368, dernière mise à jour : 14 novembre 2021 Ajouter une question
Cette FAQ a été réalisée à partir des questions fréquemment posées sur les forums de http://www.developpez.com et de l'expérience personnelle des auteurs.
Je tiens à souligner que cette FAQ ne garantit en aucun cas que les informations qu'elle propose sont correctes ; les auteurs font le maximum, mais l'erreur est humaine. Cette FAQ ne prétend pas non plus être complète. Si vous trouvez une erreur ou si vous souhaitez devenir rédacteur, lisez ceci.
Sur ce, nous vous souhaitons une bonne lecture.
Il est possible, comme cela se faisait avec printf(), de formater les informations envoyées sur un flux en utilisant ce que l'on appelle les manipulateurs de flux. Voici un petit topo (non exhaustif) des manipulateurs les plus utilisés :
Manipulateur | Persistant | Effet |
---|---|---|
Manipulateurs généraux | ||
flush | non | Force le vidage du buffer du flux et son affichage |
endl | non | Envoie une fin de ligne ('\n') ainsi qu'un flush |
setw(n) | non | Spécifie que la prochaine sortie s'effectuera sur n caractères |
setfill(c) | oui | Indique le caractère de remplissage pour setw |
left | non | Aligne la sortie à gauche lors de l'utilisation de setw |
right | non | Aligne la sortie à droite lors de l'utilisation de setw (comportement par défaut) |
Formatage des nombres entiers | ||
dec | oui | Injecte / extrait les nombres sous forme décimale |
oct | oui | Injecte / extrait les nombres sous forme octale |
hex | oui | Injecte / extrait les nombres sous forme hexadécimale |
uppercase | oui | Affiche les lettres de la représentation hexadécimale en majuscule |
nouppercase | oui | Affiche les lettres de la représentation hexadécimale en minuscule (annule l'effet d'uppercase) |
Formatage des nombres flottants | ||
setprecision(n) | oui | Spécifie le nombre de chiffres après la virgule affichés pour les nombres flottants non entiers (6 par défaut) |
fixed | oui | Affiche les nombres flottants en notation décimale (opposé de scientific) |
scientific | oui | Affiche les nombres flottants en notation scientifique (opposé de fixed) |
Formatage des booléens | ||
boolalpha | oui | Affiche les booléens sous forme alphabétique (« true » et « false » au lieu de « 1 » et « 0 ») |
noboolalpha | oui | Affiche les booléens sous forme de chiffre (annule l'effet de boolalpha) |
Code c++ : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | #include <iomanip> #include <iostream> using namespace std; // Un petit tableau // En-têtes de colonnes cout << setfill(' ') << setw(15) << left << "Colonne 1" << setw(10) << left << "Colonne 2" << endl; // Ligne 1 cout << setprecision(2) << fixed << setw(15) << left << 158.82589 << setw(10) << left << 456.10288 << endl; // Ligne 2 cout << hex << uppercase << setw(15) << left << 255 << setw(10) << left << 128 << endl; // Ligne 3 cout << boolalpha << setw(15) << left << true << setw(10) << left << false << endl; |
Le principe est le même que celui de la question Comment convertir un nombre en une string ?, sauf que l'on précise que l'on désire une représentation hexadécimale au moyen de std::hex.
Code c++ : | Sélectionner tout |
1 2 3 4 5 6 7 8 | #include <string> #include <sstream> int x = 127; std::ostringstream oss; oss << std::hex << x; std::string Hex = oss.str(); |
Le principe est le même que celui de la question Comment convertir une string en un entier ?, sauf que l'on précise que l'on manipule une représentation hexadécimale au moyen de std::hex.
Code c++ : | Sélectionner tout |
1 2 3 4 5 6 7 8 | #include <string> #include <sstream> std::string Hex = "7F"; int x; std::istringstream iss( Hex ); iss >> std::hex >> x; |
Il existe dans la bibliothèque standard des manipulateurs de flux permettant de travailler dans l'une de ces trois bases :
- décimale (std::dec)
- hexadécimale (std::hex)
- octale (std::oct)
Pour voir un exemple d'utilisation de ces manipulateurs, lisez Comment obtenir la représentation hexadécimale d'un entier ? et Comment obtenir un entier à partir de sa représentation hexadécimale ?.
Il n'existe aucun manipulateur pour la base 2 (binaire), mais on pourra y arriver au moyen de la classe std::bitset<>
Code c++ : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | #include <bitset> #include <string> #include <sstream> int main() { // Conversion binaire -> décimal std::bitset<8> b1( std::string( "01001011" ) ); unsigned long x = b1.to_ulong(); // x = 75 // Conversion décimal -> binaire std::bitset<8> b2( 75 ); // Version 1 : un peu lourde à écrire std::string s1 = b2.to_string< char, std::char_traits<char>, std::allocator<char> >(); // s1 = "01001011" // Version 2 : un peu plus sympa std::ostringstream oss; oss << b2; std::string s2 = oss.str(); // s2 = "01001011" } |
Proposer une nouvelle réponse sur la FAQ
Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour çaLes sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2024 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.