From cppreference.com
/* unspecified */setw(intn);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
), so std::setw may need to be repeatedly called to set the width for multiple operations.
Parameters
n - new value for width Return value
An object of unspecified type such that
if out is an object of type std::basic_ostream<CharT,Traits>, the expression out<<setw(n)has type std::basic_ostream<CharT,Traits>&
has value out
behaves as if it called f(out,n)
if in is an object of type std::basic_istream<CharT,Traits>, the expression in>>setw(n)has type std::basic_istream<CharT,Traits>&
has value in
behaves as if it called f(in,n)
where the function f is defined as:
voidf(std::ios_base&str,intn){// set widthstr.width(n);}Notes
The width property of the stream will be reset to zero (meaning "unspecified") if any of the following functions are called:
Input
operator>>(basic_istream&, basic_string&)
operator>>(basic_istream&, char*)
Output
Overloads of
that take arithmetic types or void pointers (at Stage 3 of
)
operator<<(basic_ostream&, char)
and
operator<<(basic_ostream&, char*)
operator<<(basic_ostream&, basic_string&)
(inside
)
(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.
Example
Run this code
#include<iomanip>#include<iostream>#include<sstream>intmain(){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::istringstreamis("hello, world");chararr[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" Defect reports
The following behavior-changing defect reports were applied retroactively to previously published C++ standards.
DR Applied to Behavior as published Correct behavior
C++98 setw could only be used with streams of
type
or
usable with any
character stream See also