std::ios_base:: width
|
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.
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) |