std::ios_base::width
Von cppreference.com
| streamsize width() const; |
(1) | |
| streamsize width( streamsize new_width ); |
(2) | |
Verwaltet die minimale Anzahl von Zeichen, die bei bestimmten Ausgabeoperationen erzeugt werden, und die maximale Anzahl von Zeichen, die bei bestimmten Eingabeoperationen erzeugt werden.
1) Gibt die aktuelle Feldbreite zurück.
2) Setzt die Feldbreite auf den angegebenen Wert. Gibt die vorherige Feldbreite zurück.
Inhalt |
[bearbeiten] Parameter
| new_width | - | neue Einstellung der Feldbreite |
[bearbeiten] Rückgabewert
Die Feldbreite vor dem Aufruf der Funktion.
[bearbeiten] Hinweise
Einige I/O-Funktionen rufen width(0) auf, bevor sie zurückkehren. Siehe std::setw (dies führt dazu, dass dieses Feld nur auf die nächste I/O-Funktion und nicht auf nachfolgende I/Os wirkt).
Die genauen Auswirkungen dieses Modifikators auf die Ein- und Ausgabe variieren zwischen den einzelnen I/O-Funktionen und werden auf jeder Seite der `operator<<` und `operator>>` Überladung einzeln beschrieben.
[bearbeiten] Beispiel
Führen Sie diesen Code aus
#include <algorithm> #include <array> #include <iomanip> #include <iostream> #include <span> #include <string_view> using namespace std::string_view_literals; constexpr std::array table_header = { "Language"sv, "Author"sv, "Birthdate"sv, "RIP date"sv }; using row_t = std::array<std::string_view, table_header.size()>; using widths_t = std::array<std::size_t, table_header.size()>; constexpr std::array table_body = std::to_array<row_t> ({ {"C", "Dennis Ritchie", "1941-09-09", "2011-10-12"}, {"C++", "Bjarne Stroustrup", "1950-12-30"}, {"C#", "Anders Hejlsberg", "1960-12-02"}, {"Python", "Guido van Rossum", "1956-01-31"}, {"Javascript", "Brendan Eich", "1961-07-04"} }); constexpr widths_t calculate_column_widths(std::span<const row_t> table) { widths_t widths{}; for (const row_t& row : table) for (size_t i = 0; i != row.size(); ++i) widths[i] = std::max(widths[i], row[i].size()); return widths; } void print_row(const row_t& row, const widths_t& widths) { std::cout << '|'; for (size_t i = 0; i != row.size(); ++i) { std::cout << ' '; std::cout.width(widths[i]); std::cout << row[i] << " |"; } std::cout << '\n'; }; void print_break(const widths_t& widths) { const std::size_t margin = 1; std::cout.put('+').fill('-'); for (std::size_t w : widths) { std::cout.width(w + margin * 2); std::cout << '-' << '+'; } std::cout.put('\n').fill(' '); }; int main() { constexpr widths_t widths = calculate_column_widths(table_body); std::cout.setf(std::ios::left, std::ios::adjustfield); print_break(widths); print_row(table_header, widths); print_break(widths); for (const row_t& row : table_body) print_row(row, widths); print_break(widths); }
Ausgabe
+------------+-------------------+------------+------------+ | Language | Author | Birthdate | RIP date | +------------+-------------------+------------+------------+ | C | Dennis Ritchie | 1941-09-09 | 2011-10-12 | | C++ | Bjarne Stroustrup | 1950-12-30 | | | C# | Anders Hejlsberg | 1960-12-02 | | | Python | Guido van Rossum | 1956-01-31 | | | Javascript | Brendan Eich | 1961-07-04 | | +------------+-------------------+------------+------------+
[bearbeiten] Siehe auch
| verwaltet die Dezimalgenauigkeit von Fließkommaoperationen (public member function) | |
| Ändert die Breite des nächsten Eingabe-/Ausgabefeldes (Funktion) |