Namespaces
Variants

std::ios_base:: width

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

Gère le nombre minimum de caractères à générer pour certaines opérations de sortie et le nombre maximum de caractères à générer pour certaines opérations d'entrée.

1) Retourne la largeur de champ actuelle.
2) Définit la largeur du champ à la valeur donnée. Retourne la largeur précédente du champ.

Table des matières

Paramètres

new_width - nouveau paramètre de largeur de champ

Valeur de retour

La largeur de champ avant l'appel à la fonction.

Notes

Certaines fonctions d'E/S appellent width ( 0 ) avant de retourner, voir std::setw (ce qui a pour effet que ce champ n'agit que sur la prochaine fonction d'E/S, et non sur toute E/S ultérieure).

Les effets exacts de ce modificateur sur l'entrée et la sortie varient selon les fonctions d'E/S individuelles et sont décrits sur chaque page de surcharge operator<< et operator>> individuellement.

Exemple

#include <algorithm>
#include <array>
#include <iomanip>
#include <iostream>
#include <span>
#include <string_view>
using namespace std::string_view_literals;
constexpr std::array en_tête_tableau =
{
    "Langage"sv, "Auteur"sv, "Date de naissance"sv, "Date de décès"sv
};
using row_t = std::array<std::string_view, en_tête_tableau.size()>;
using widths_t = std::array<std::size_t, en_tête_tableau.size()>;
constexpr std::array corps_tableau = 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 calculer_largeurs_colonnes(std::span<const row_t> tableau)
{
    widths_t largeurs{};
    for (const row_t& ligne : tableau)
        for (size_t i = 0; i != ligne.size(); ++i)
            largeurs[i] = std::max(largeurs[i], ligne[i].size());
    return largeurs;
}
void afficher_ligne(const row_t& ligne, const widths_t& largeurs)
{
    std::cout << '|';
    for (size_t i = 0; i != ligne.size(); ++i)
    {
        std::cout << ' ';
        std::cout.width(largeurs[i]);
        std::cout << ligne[i] << " |";
    }
    std::cout << '\n';
};
void afficher_séparation(const widths_t& largeurs)
{
    const std::size_t marge = 1;
    std::cout.put('+').fill('-');
    for (std::size_t l : largeurs)
    {
        std::cout.width(l + marge * 2);
        std::cout << '-' << '+';
    }
    std::cout.put('\n').fill(' ');
};
int main()
{
    constexpr widths_t largeurs = calculer_largeurs_colonnes(corps_tableau);
    std::cout.setf(std::ios::left, std::ios::adjustfield);
    afficher_séparation(largeurs);
    afficher_ligne(en_tête_tableau, largeurs);
    afficher_séparation(largeurs);
    for (const row_t& ligne : corps_tableau)
        afficher_ligne(ligne, largeurs);
    afficher_séparation(largeurs);
}

Sortie :

+------------+-------------------+------------+------------+
| Langage    | Auteur            | Naissance  | Date décès |
+------------+-------------------+------------+------------+
| 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 |            |
+------------+-------------------+------------+------------+

Voir aussi

gère la précision décimale des opérations en virgule flottante
(fonction membre publique)
modifie la largeur du prochain champ d'entrée/sortie
(fonction)