C++
VeröffentlichtRevision 1

Manipulatoren: Zahlen und Tabellen formatieren

Ein Manipulator beeinflusst einen Stream, beispielsweise seine Formatierung. Manche erwarten einen Wert, etwa std::setw(10). Nicht alle gehören zu <iomanip>: std::endl ist in <ostream> deklariert und hier über <iostream> verfügbar. <iomanip> brauchst du etwa für setw, setfill und setprecision.

Manipulatoren: Zahlen und Tabellen formatieren#

Ein- und Ausgabe · Lektion 11 von 60

Voraussetzungen: Ausgabe. Lernziel: Du steuerst Breite, Nachkommastellen und Zahlendarstellung.

Ein Manipulator beeinflusst einen Stream, beispielsweise seine Formatierung. Manche erwarten einen Wert, etwa std::setw(10). Nicht alle gehören zu <iomanip>: std::endl ist in <ostream> deklariert und hier über <iostream> verfügbar. <iomanip> brauchst du etwa für setw, setfill und setprecision.

C++
1#include <iomanip>2#include <iostream>3 4int main() {5    std::cout << std::left << std::setw(10) << "Name"6              << std::right << std::setw(6) << "Punkte" << '\n';7    std::cout << std::left << std::setw(10) << "Ada"8              << std::right << std::setw(6) << 12 << '\n';9    std::cout << std::fixed << std::setprecision(2) << 3.5 << '\n';10}
Nur Text
1Name      Punkte2Ada           1233.50

Breite ist eine Mindestbreite#

std::setw(n) stellt für die nächste passende formatierte Ein- oder Ausgabe eine Breite ein. Bei den gezeigten String- und Zahlenausgaben wird sie danach zurückgesetzt. Deshalb steht setw vor jeder Spalte erneut. Längere Inhalte werden nicht abgeschnitten.

std::left richtet linksbündig aus, std::right rechtsbündig. std::setfill('-') legt das Auffüllzeichen fest. Diese Einstellungen bleiben erhalten, bis du sie änderst. Setze ein ungewöhnliches Füllzeichen mit std::setfill(' ') zurück.

Nachkommastellen und Präzision#

Präzision meint hier die Anzahl dargestellter Ziffern gemäß dem gewählten Format. Mit std::fixed bedeutet std::setprecision(2) zwei Nachkommastellen. Im Standardformat geht es um signifikante Ziffern, also die für die Darstellung berücksichtigten Ziffern insgesamt.

std::scientific wählt wissenschaftliche Schreibweise mit einem Zehnerexponenten. Ein Exponent gibt an, wie oft eine Basis als Faktor verwendet wird; e+03 bedeutet hier „mal 1000“. std::defaultfloat stellt die allgemeine Gleitkommadarstellung wieder her. Formatierung ändert nicht den gespeicherten Zahlenwert.

Manipulator

Wirkung

Rückstellung

std::boolalpha

Wahrheitswerte als true und false

std::noboolalpha

std::hex

Ganzzahlen hexadezimal

std::dec

std::oct

Ganzzahlen oktal

std::dec

std::showbase

Passendes Basispräfix anzeigen

std::noshowbase

std::flush

Stream-Puffer leeren

Keine dauerhafte Einstellung

Ein Präfix ist ein vorangestellter Teil, etwa 0x vor einer Hexadezimalzahl. Dauerhaft gesetzte Formatierungen beeinflussen nachfolgende Ausgaben. Berücksichtige das auch in eigenen Funktionen.

Übung#

Was gibt std::cout << std::setfill('0') << std::setw(4) << 7; aus?

Lösung

0007. Für eine weitere vierstellige Ausgabe brauchst du erneut setw(4). setfill('0') bleibt aktiv.

Weiterlernen#

Zurück: Ganze Zeilen und Eingaben mit Leerzeichen · Kursübersicht · Weiter: Variablen, Initialisierung und Zuweisung

Mitwirkende 1

Menschen, deren Änderungen in dieser Seite veröffentlicht wurden.

Kommentare 0

Kommentare sind für diese Seite deaktiviert.