Rechtsbündige Ausgabe in C++
-
Verwenden von
std::right
undstd::setw
zur rechtsbündigen Ausgabe in C++ -
Verwenden der Funktion
printf
zur rechtsbündigen Ausgabe in C++
Dieser Artikel demonstriert mehrere Methoden, wie man den Ausgabestrom in C++ rechtsbündig ausrichten kann.
Verwenden von std::right
und std::setw
zur rechtsbündigen Ausgabe in C++
Die C++-Standardbibliothek bietet E/A-Manipulator-Hilfsfunktionen zur besseren Steuerung von Datenströmen, wenn sie mit << >>
-Operatoren verwendet werden, und sie sind in der Header-Datei <iomanip>
enthalten. std::right
ist einer der Stream-Manipulatoren, der die Position von Füllzeichen setzt. Daher sollte er in Verbindung mit der Manipulatorfunktion std::setw
verwendet werden, die zum Einstellen der Stream-Breite dient. Die Funktion std::setw
nimmt einen einzelnen Integer als Argument, um die Anzahl der zuzuweisenden Zeichen für die Stream-Breite anzugeben.
Im nächsten Beispielcode initialisieren wir einen Vektor von double
mit beliebigen Werten, die eine unterschiedliche Genauigkeit haben, und geben sie dann alle im Blocksatz auf der rechten Seite der Konsole aus.
#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;
}
Ausgabe:
123.231000
2.234300
0.324000
0.012000
26.949109
11013.000000
92.001112
0.000000
Verwenden der Funktion printf
zur rechtsbündigen Ausgabe in C++
Eine weitere mächtige Funktion, um mit der E/A-Formatierung umzugehen, ist printf
. Auch wenn printf
nicht mit cin
/cout
-Streams verwendet wird, kann es Variablenargumente separat formatieren. Beachten Sie, dass wir den %f
-Formatierer für die Fließkommawerte verwenden und eine beliebige Zahl 20
verwenden, um Füllzeichen zu jedem Element hinzuzufügen. Das Ergebnis ist, dass jede Zeile 20
Zeichen breit ist, und da die Zahl positiv ist, werden die Füllzeichen von links angehängt.
#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;
}
Ausgabe:
123.231000
2.234300
0.324000
0.012000
26.949109
11013.000000
92.001112
0.000000
Alternativ können wir eine negative ganze Zahl in den Formatbezeichner einfügen, um die Füllzeichen auf der rechten Seite anzuhängen und die Ausgabe links zu begründen. Eine weitere mächtige Funktion des printf
ist die Formatierung von literalen String-Werten, wie im folgenden Beispielcode demonstriert. Beachten Sie, dass %c
der char
-Formatbezeichner ist und 0x20
der hexadezimale Wert für ein Leerzeichen.
#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;
}
Ausgabe:
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