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.
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}1Name Punkte2Ada 1233.50Breite 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
Kommentare 0
Kommentare sind für diese Seite deaktiviert.