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