Justifier la production en C++ à droite
-
Utilisez
std::right
etstd::setw
pour justifier à droite le flux de sortie en C++ -
Utilisez la fonction
printf
pour justifier à droite la sortie en C++
Cet article présente plusieurs méthodes pour justifier le flux de sortie en C++.
Utilisez std::right
et std::setw
pour justifier à droite le flux de sortie en C++
La bibliothèque standard C++ fournit des fonctions d’aide au manipulateur d’E/S pour mieux contrôler les flux lorsqu’elles sont utilisées avec les opérateurs << >>
, et elles sont incluses dans le fichier d’en-tête <iomanip>
. std::right
est l’un des manipulateurs de flux qui définit la position des caractères de remplissage. Il doit donc être utilisé en conjonction avec la fonction de manipulation std::setw
, qui est utilisée pour définir la largeur du flux. std::setw
prend un entier unique comme argument pour spécifier le nombre de caractères à allouer à la largeur du flux.
Dans l’exemple de code suivant, nous initialisons un vecteur de double
s avec des valeurs arbitraires qui ont une précision différente, puis nous les affichons toutes comme justifiées sur le côté droit de la console.
#include <iostream>
#include <iomanip>
#include <vector>
using std::cout; using std::endl;
using std::vector; using std::fixed;
using std::right; using std::setw;
int main() {
vector<double> d_vec = {123.231, 2.2343, 0.324, 0.012,
26.9491092019, 11013,
92.001112, 0.000000234};
for (auto &i : d_vec) {
cout << right
<< setw(20)
<< fixed
<< i << endl;
}
cout << endl;
return EXIT_SUCCESS;
}
Production :
123.231000
2.234300
0.324000
0.012000
26.949109
11013.000000
92.001112
0.000000
Utilisez la fonction printf
pour justifier à droite la sortie en C++
Une autre fonction puissante pour traiter le formatage des entrées/sorties est printf
. Même si printf
n’est pas utilisé avec les flux cin
/cout
, il peut formater des arguments variables séparément. Notez que nous utilisons le spécificateur de format %f
pour les valeurs en virgule flottante, et utilisons un nombre arbitraire 20
pour ajouter des caractères de remplissage à chaque élément. En conséquence, chaque ligne a une largeur de 20 caractères, et comme le nombre est positif, les caractères de remplissage sont ajoutés à partir de la gauche.
#include <iostream>
#include <iomanip>
#include <vector>
using std::cout; using std::endl;
using std::vector; using std::fixed;
using std::right; using std::setw;
int main() {
vector<double> d_vec = {123.231, 2.2343, 0.324, 0.012,
26.9491092019, 11013,
92.001112, 0.000000234};
for (auto &i : d_vec) {
printf("%20f\n", i);
}
return EXIT_SUCCESS;
}
Production :
123.231000
2.234300
0.324000
0.012000
26.949109
11013.000000
92.001112
0.000000
On peut aussi insérer un nombre entier négatif dans le spécificateur de format pour remplir les caractères à droite, justifiant la sortie à gauche. Une autre fonction puissante de printf
est de formater les valeurs de chaînes littérales, comme le montre l’exemple de code suivant. Notez que %c
est le spécificateur de format char
, et que la valeur 0x20
est hexadécimale pour un caractère espace.
#include <iostream>
#include <iomanip>
#include <vector>
using std::cout; using std::endl;
using std::vector; using std::fixed;
using std::right; using std::setw;
int main() {
vector<double> d_vec = {123.231, 2.2343, 0.324, 0.012,
26.9491092019, 11013,
92.001112, 0.000000234};
for (auto &i : d_vec) {
printf("%-20f\n", i);
}
printf("%60s\n", "this ought to be justified right");
printf("%-20s|%20c|%20s\n", "wandering", 0x20, "the tower");
return EXIT_SUCCESS;
}
Production :
123.231000
2.234300
0.324000
0.012000
26.949109
11013.000000
92.001112
0.000000
this ought to be justified right
wandering | | the tower