Defined in header <iomanip> | ||
|---|---|---|
/* unspecified */ setw( int n ); |
When used in an expression out << std::setw(n) or in >> std::setw(n), sets the width parameter of the stream out or in to exactly n.
Some operations reset the width to zero (see below), so std::setw may need to be repeatedly called to set the width for multiple operations.
| n | - | new value for width |
An object of unspecified type such that.
out is an object of type std::basic_ostream<CharT, Traits>, the expression out << setw(n) std::basic_ostream<CharT, Traits>& out f(out, n) in is an object of type std::basic_istream<CharT, Traits>, the expression in >> setw(n) std::basic_istream<CharT, Traits>& in f(in, n) where the function f is defined as:
void f(std::ios_base& str, int n)
{
// set width
str.width(n);
}The width property of the stream will be reset to zero (meaning "unspecified") if any of the following functions are called:
basic_ostream::operator<<() that take arithmetic types or void pointers (at Stage 3 of num_put::put()) operator<<(basic_ostream&, char) and operator<<(basic_ostream&, char*) operator<<(basic_ostream&, basic_string&) std::put_money (inside money_put::put()) std::quoted (when used with an output stream) The exact effects this modifier has on the input and output vary between the individual I/O functions and are described at each operator<< and operator>> overload page individually.
#include <iomanip>
#include <iostream>
#include <sstream>
int main()
{
std::cout << "no setw: [" << 42 << "]\n"
<< "setw(6): [" << std::setw(6) << 42 << "]\n"
<< "no setw, several elements: [" << 89 << 12 << 34 << "]\n"
<< "setw(6), several elements: [" << 89 << std::setw(6) << 12 << 34 << "]\n";
std::istringstream is("hello, world");
char arr[10];
is >> std::setw(6) >> arr;
std::cout << "Input from \"" << is.str() << "\" with setw(6) gave \""
<< arr << "\"\n";
}Output:
no setw: [42] setw(6): [ 42] no setw, several elements: [891234] setw(6), several elements: [89 1234] Input from "hello, world" with setw(6) gave "hello"
The following behavior-changing defect reports were applied retroactively to previously published C++ standards.
| DR | Applied to | Behavior as published | Correct behavior |
|---|---|---|---|
| LWG 183 | C++98 | setw could only be used with streams oftype std::ostream or std::istream | usable with any character stream |
| manages field width (public member function of std::ios_base) |
|
| changes the fill character (function template) |
|
| sets the placement of fill characters (function) |
|
| controls whether prefix is used to indicate numeric base (function) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/io/manip/setw