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
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 <iomanip>
#include <iostream>
#include <vector>
using std::cout;
using std::endl;
using std::fixed;
using std::right;
using std::setw;
using std::vector;
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 <iomanip>
#include <iostream>
#include <vector>
using std::cout;
using std::endl;
using std::fixed;
using std::right;
using std::setw;
using std::vector;
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 <iomanip>
#include <iostream>
#include <vector>
using std::cout;
using std::endl;
using std::fixed;
using std::right;
using std::setw;
using std::vector;
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
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook