Namespaces
Variants

std::ios_base:: width

From cppreference.net
streamsize width ( ) const ;
(1)
streamsize width ( streamsize new_width ) ;
(2)

Verwaltet die minimale Anzahl von Zeichen, die bei bestimmten Ausgabeoperationen generiert werden, und die maximale Anzahl von Zeichen, die bei bestimmten Eingabeoperationen generiert werden.

1) Gibt die aktuelle Feldbreite zurück.
2) Setzt die Feldbreite auf den angegebenen Wert. Gibt die vorherige Feldbreite zurück.

Inhaltsverzeichnis

Parameter

new_width - neue Feldbreiteneinstellung

Rückgabewert

Die Feldbreite vor dem Aufruf der Funktion.

Hinweise

Einige E/A-Funktionen rufen width ( 0 ) vor der Rückgabe auf, siehe std::setw (dies führt dazu, dass dieses Feld nur auf die nächste E/A-Funktion wirkt und nicht auf nachfolgende E/A-Operationen).

Die genauen Auswirkungen dieses Modifikators auf die Eingabe und Ausgabe variieren zwischen den einzelnen E/A-Funktionen und werden auf jeder operator<< und operator>> Überladungsseite individuell beschrieben.

Beispiel

#include <algorithm>
#include <array>
#include <iomanip>
#include <iostream>
#include <span>
#include <string_view>
using namespace std::string_view_literals;
constexpr std::array tabellenkopf =
{
    "Sprache"sv, "Autor"sv, "Geburtsdatum"sv, "Todesdatum"sv
};
using row_t = std::array<std::string_view, tabellenkopf.size()>;
using widths_t = std::array<std::size_t, tabellenkopf.size()>;
constexpr std::array tabelleninhalt = 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 berechne_spaltenbreiten(std::span<const row_t> tabelle)
{
    widths_t breiten{};
    for (const row_t& zeile : tabelle)
        for (size_t i = 0; i != zeile.size(); ++i)
            breiten[i] = std::max(breiten[i], zeile[i].size());
    return breiten;
}
void drucke_zeile(const row_t& zeile, const widths_t& breiten)
{
    std::cout << '|';
    for (size_t i = 0; i != zeile.size(); ++i)
    {
        std::cout << ' ';
        std::cout.width(breiten[i]);
        std::cout << zeile[i] << " |";
    }
    std::cout << '\n';
};
void drucke_trennlinie(const widths_t& breiten)
{
    const std::size_t rand = 1;
    std::cout.put('+').fill('-');
    for (std::size_t w : breiten)
    {
        std::cout.width(w + rand * 2);
        std::cout << '-' << '+';
    }
    std::cout.put('\n').fill(' ');
};
int main()
{
    constexpr widths_t breiten = berechne_spaltenbreiten(tabelleninhalt);
    std::cout.setf(std::ios::left, std::ios::adjustfield);
    drucke_trennlinie(breiten);
    drucke_zeile(tabellenkopf, breiten);
    drucke_trennlinie(breiten);
    for (const row_t& zeile : tabelleninhalt)
        drucke_zeile(zeile, breiten);
    drucke_trennlinie(breiten);
}

Ausgabe:

+------------+-------------------+------------+------------+
| Sprache    | Autor             | Geburtsdatum | Sterbedatum |
+------------+-------------------+------------+------------+
| 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 |            |
+------------+-------------------+------------+------------+

Siehe auch

verwaltet die Dezimalgenauigkeit von Gleitkommaoperationen
(öffentliche Elementfunktion)
ändert die Breite des nächsten Eingabe-/Ausgabefelds
(Funktion)