Rechtsbündige Ausgabe in C++

  1. Verwenden von std::right und std::setw zur rechtsbündigen Ausgabe in C++
  2. 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 <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;
}

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 <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;
}

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 <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;
}

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

Verwandter Artikel - C++ IO

  • Verwendung der Methode cin.fail in C++