std::ios_base:: width
From cppreference.net
|
streamsize width
(
)
const
;
|
(1) | |
|
streamsize width
(
streamsize new_width
)
;
|
(2) | |
특정 출력 작업에서 생성할 최소 문자 수와 특정 입력 작업에서 생성할 최대 문자 수를 관리합니다.
1)
현재 필드 너비를 반환합니다.
2)
주어진 값으로 필드 너비를 설정합니다. 이전 필드 너비를 반환합니다.
목차 |
매개변수
| new_width | - | 새로운 필드 너비 설정 |
반환값
함수 호출 전의 필드 너비.
참고 사항
일부 I/O 함수는 반환하기 전에 width ( 0 ) 를 호출합니다. 자세한 내용은 std::setw 를 참조하십시오 (이는 이 필드가 다음 I/O 함수에만 영향을 미치고 이후의 I/O에는 영향을 미치지 않게 됩니다).
이 수정자가 입력과 출력에 미치는 정확한 효과는 개별 I/O 함수마다 다르며, 각
operator<<
와
operator>>
오버로드 페이지에서 개별적으로 설명됩니다.
예제
이 코드 실행
#include <algorithm> #include <array> #include <iomanip> #include <iostream> #include <span> #include <string_view> using namespace std::string_view_literals; constexpr std::array table_header = { "언어"sv, "저자"sv, "생년월일"sv, "사망일"sv }; using row_t = std::array<std::string_view, table_header.size()>; using widths_t = std::array<std::size_t, table_header.size()>; constexpr std::array table_body = 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 calculate_column_widths(std::span<const row_t> table) { widths_t widths{}; for (const row_t& row : table) for (size_t i = 0; i != row.size(); ++i) widths[i] = std::max(widths[i], row[i].size()); return widths; } void print_row(const row_t& row, const widths_t& widths) { std::cout << '|'; for (size_t i = 0; i != row.size(); ++i) { std::cout << ' '; std::cout.width(widths[i]); std::cout << row[i] << " |"; } std::cout << '\n'; }; void print_break(const widths_t& widths) { const std::size_t margin = 1; std::cout.put('+').fill('-'); for (std::size_t w : widths) { std::cout.width(w + margin * 2); std::cout << '-' << '+'; } std::cout.put('\n').fill(' '); }; int main() { constexpr widths_t widths = calculate_column_widths(table_body); std::cout.setf(std::ios::left, std::ios::adjustfield); print_break(widths); print_row(table_header, widths); print_break(widths); for (const row_t& row : table_body) print_row(row, widths); print_break(widths); }
출력:
+------------+-------------------+------------+------------+ | 언어 | 저자 | 생년월일 | 사망일 | +------------+-------------------+------------+------------+ | 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 | | +------------+-------------------+------------+------------+
참고 항목
|
부동 소수점 연산의 소수점 정밀도를 관리합니다
(public member function) |
|
|
다음 입출력 필드의 너비를 변경합니다
(function) |