Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
std::ios_base::width(3)	      C++ Standard Libary      std::ios_base::width(3)

NAME
       std::ios_base::width - std::ios_base::width

Synopsis
	  streamsize width() const;		    (1)
	  streamsize width( streamsize new_width ); (2)

	  Manages the minimum number of	characters to generate on certain out-
       put 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.

Parameters
	  new_width - new field	width setting

Return value
	  The field width before the call to the function.

Notes
	  Some I/O functions call width(0)  before  returning,	see  std::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 be-
       tween the
	  individual I/O functions and are described at	 each  operator<<  and
       operator>>
	  overload page	individually.

Example
       // Run this code

	#include <algorithm>
	#include <array>
	#include <iomanip>
	#include <iostream>
	#include <span>
	#include <string_view>
	using namespace	std::string_view_literals;

	constexpr std::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()>;

	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> ta-
       ble)
	{
	    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);
	}

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 |		   |
	+------------+-------------------+------------+------------+

See also
	  precision manages decimal precision of floating point	operations
		    (public member function)
	  setw	    changes the	width of the next input/output field
		    (function)

http://cppreference.com		  2024.06.10	       std::ios_base::width(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::ios_base::width&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help