Giustifica a destra l'output in C++
-
Usa
std::right
estd::setw
per giustificare l’output a destra in C++ -
Usa la funzione
printf
per giustificare a destra l’output in C++
Questo articolo illustrerà più metodi su come giustificare a destra il flusso di output in C++.
Usa std::right
e std::setw
per giustificare l’output a destra in C++
La libreria standard C++ fornisce funzioni di supporto del manipolatore I/O per controllare meglio i flussi quando viene utilizzata con gli operatori << >>
e sono incluse nel file di intestazione <iomanip>
. std::right
è uno dei manipolatori di flusso che imposta la posizione dei caratteri di riempimento. Quindi dovrebbe essere usato insieme alla funzione di manipolazione std::setw
, che è usata per impostare la larghezza del flusso. std::setw
accetta un singolo intero come argomento per specificare il numero di caratteri da allocare per la larghezza del flusso.
Nel prossimo codice di esempio, inizializziamo un vettore di double
con valori arbitrari che hanno una precisione diversa e poi li mostriamo tutti come giustificato sul lato destro della 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;
}
Produzione:
123.231000
2.234300
0.324000
0.012000
26.949109
11013.000000
92.001112
0.000000
Usa la funzione printf
per giustificare a destra l’output in C++
Un’altra potente funzione per gestire la formattazione I/O è printf
. Anche se printf
non è usato con i flussi cin
/ cout
, può formattare separatamente gli argomenti delle variabili. Nota che usiamo l’identificatore di formato %f
per i valori in virgola mobile, e usiamo un numero arbitrario 20
per aggiungere caratteri di riempimento a ciascun elemento. Di conseguenza, ogni linea è larga 20
caratteri e poiché il numero è positivo, i caratteri di riempimento vengono aggiunti da sinistra.
#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;
}
Produzione:
123.231000
2.234300
0.324000
0.012000
26.949109
11013.000000
92.001112
0.000000
In alternativa, possiamo inserire un numero intero negativo nell’identificatore di formato per riempire i caratteri sul lato destro, giustificando l’output a sinistra. Un’altra potente caratteristica di printf
è formattare valori di stringa letterali, come dimostrato nel seguente codice di esempio. Nota che %c
è l’identificatore di formato char
e il valore 0x20
è esadecimale per un carattere spazio.
#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;
}
Produzione:
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