Namespaces
Variants

std::ios_base:: width

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

Gestiona el número mínimo de caracteres a generar en ciertas operaciones de salida y el número máximo de caracteres a generar en ciertas operaciones de entrada.

1) Devuelve el ancho de campo actual.
2) Establece el ancho del campo al valor dado. Devuelve el ancho del campo anterior.

Contenidos

Parámetros

new_width - nueva configuración de ancho de campo

Valor de retorno

El ancho de campo antes de la llamada a la función.

Notas

Algunas funciones de E/S llaman a width ( 0 ) antes de retornar, consulte std::setw (esto resulta en que este campo tenga efecto únicamente en la siguiente función de E/S, y no en ninguna E/S posterior).

Los efectos exactos que este modificador tiene en la entrada y salida varían entre las funciones de E/S individuales y se describen en cada operator<< y operator>> página de sobrecarga individualmente.

Ejemplo

#include <algorithm>
#include <array>
#include <iomanip>
#include <iostream>
#include <span>
#include <string_view>
using namespace std::string_view_literals;
constexpr std::array encabezado_tabla =
{
    "Lenguaje"sv, "Autor"sv, "Fecha de nacimiento"sv, "Fecha de fallecimiento"sv
};
using fila_t = std::array<std::string_view, encabezado_tabla.size()>;
using anchos_t = std::array<std::size_t, encabezado_tabla.size()>;
constexpr std::array cuerpo_tabla = std::to_array<fila_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 anchos_t calcular_anchos_columnas(std::span<const fila_t> tabla)
{
    anchos_t anchos{};
    for (const fila_t& fila : tabla)
        for (size_t i = 0; i != fila.size(); ++i)
            anchos[i] = std::max(anchos[i], fila[i].size());
    return anchos;
}
void imprimir_fila(const fila_t& fila, const anchos_t& anchos)
{
    std::cout << '|';
    for (size_t i = 0; i != fila.size(); ++i)
    {
        std::cout << ' ';
        std::cout.width(anchos[i]);
        std::cout << fila[i] << " |";
    }
    std::cout << '\n';
};
void imprimir_linea_separadora(const anchos_t& anchos)
{
    const std::size_t margen = 1;
    std::cout.put('+').fill('-');
    for (std::size_t w : anchos)
    {
        std::cout.width(w + margen * 2);
        std::cout << '-' << '+';
    }
    std::cout.put('\n').fill(' ');
};
int main()
{
    constexpr anchos_t anchos = calcular_anchos_columnas(cuerpo_tabla);
    std::cout.setf(std::ios::left, std::ios::adjustfield);
    imprimir_linea_separadora(anchos);
    imprimir_fila(encabezado_tabla, anchos);
    imprimir_linea_separadora(anchos);
    for (const fila_t& fila : cuerpo_tabla)
        imprimir_fila(fila, anchos);
    imprimir_linea_separadora(anchos);
}

Salida:

+------------+-------------------+------------+------------+
| Lenguaje   | Autor             | Fecha de Nacimiento | Fecha de Fallecimiento |
+------------+-------------------+------------+------------+
| 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 |            |
+------------+-------------------+------------+------------+

Véase también

gestiona la precisión decimal de las operaciones de punto flotante
(función miembro pública)
cambia el ancho del siguiente campo de entrada/salida
(función)