Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      std::ios_base::width

      From cppreference.com
      <cpp‎ |io‎ |ios base
       
       
       
       
      streamsize width()const;
      (1)
      streamsize width( streamsize new_width);
      (2)

      Manages the minimum number of characters to generate on certain output operations and the maximum number of characters to generate on certain input operations.

      1) Returns the current field width.
      2) Sets the field width to the given one. Returns the previous field width.

      Contents

      [edit]Parameters

      new_width - new field width setting

      [edit]Return value

      The field width before the call to the function.

      [edit]Notes

      Some I/O functions callwidth(0) before returning, seestd::setw (this results in this field having effect on the next I/O function only, and not on any subsequent I/O).

      The exact effects this modifier has on the input and output vary between the individual I/O functions and are described at eachoperator<< andoperator>> overload page individually.

      [edit]Example

      Run this code
      #include <algorithm>#include <array>#include <iomanip>#include <iostream>#include <span>#include <string_view>usingnamespace std::string_view_literals; constexprstd::array table_header={"Language"sv,"Author"sv,"Birthdate"sv,"RIP date"sv}; using row_t=std::array<std::string_view, table_header.size()>;using widths_t=std::array<std::size_t, table_header.size()>; constexprstd::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){conststd::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);}

      Output:

      +------------+-------------------+------------+------------+| Language   | Author            | Birthdate  | RIP date   |+------------+-------------------+------------+------------+| 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 |            |+------------+-------------------+------------+------------+

      [edit]See also

      manages decimal precision of floating point operations
      (public member function)[edit]
      changes the width of the next input/output field
      (function)[edit]
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/io/ios_base/width&oldid=169678"

      [8]ページ先頭

      ©2009-2025 Movatter.jp