流操作器
操作器可以以其他方式使用。例如:
-
os.width(n);
等于os << std::setw(n);
is.width(n);
等于is >> std::setw(n);
-
os.precision(n);
等于os << std::setprecision(n);
is.precision(n);
等于is >> std::setprecision(n);
-
os.setfill(c);
等于os << std::setfill(c);
-
str >> std::setbase(base);
或str << std::setbase(base);
等于
str.setf(base == 8 ? std::ios_base::oct :
base == 10 ? std::ios_base::dec :
base == 16 ? std::ios_base::hex :
std::ios_base::fmtflags(0),
std::ios_base::basefield);
-
os.setf(std::ios_base::flag);
等于os << std::flag;
is.setf(std::ios_base::flag);
等于is >> std::flag;
os.unsetf(std::ios_base::flag);
等于os << std::no ## flag;
is.unsetf(std::ios_base::flag);
等于is >> std::no ## flag;
(其中 ## - 是连接运算符 )
用于下一个
flag
s:boolalpha
,showbase
,showpoint
,showpos
,skipws
,uppercase
。 -
std::ios_base::basefield
。
对于flag
s:dec
,hex
和oct
:
-
os.setf(std::ios_base::flag, std::ios_base::basefield);
等于os << std::flag;
is.setf(std::ios_base::flag, std::ios_base::basefield);
等于is >> std::flag;
(1) -
str.unsetf(std::ios_base::flag, std::ios_base::basefield);
等于str.setf(std::ios_base::fmtflags(0), std::ios_base::basefield);
(2)
std::ios_base::adjustfield
。
对于flag
s:left
,right
和internal
:
-
os.setf(std::ios_base::flag, std::ios_base::adjustfield);
等于os << std::flag;
is.setf(std::ios_base::flag, std::ios_base::adjustfield);
等于is >> std::flag;
(1) -
str.unsetf(std::ios_base::flag, std::ios_base::adjustfield);
等于str.setf(std::ios_base::fmtflags(0), std::ios_base::adjustfield);
(2)
(1) 如果先前设置的相应字段的标志已被 unsetf
取消设置。
(2) 如果设置了 flag
。
std::ios_base::floatfield
。
-
os.setf(std::ios_base::flag, std::ios_base::floatfield);
等于os << std::flag;
is.setf(std::ios_base::flag, std::ios_base::floatfield);
等于is >> std::flag;
为
flag
s:fixed
和scientific
。 -
os.setf(std::ios_base::fmtflags(0), std::ios_base::floatfield);
等于os << std::defaultfloat;
is.setf(std::ios_base::fmtflags(0), std::ios_base::floatfield);
等于is >> std::defaultfloat;
-
str.setf(std::ios_base::fmtflags(0), std::ios_base::flag);
等于str.unsetf(std::ios_base::flag)
为
flag
s:basefield
,adjustfield
,floatfield
。 -
os.setf(mask)
等于os << setiosflags(mask);
is.setf(mask)
等于is >> setiosflags(mask);
os.unsetf(mask)
等于os << resetiosflags(mask);
is.unsetf(mask)
等于is >> resetiosflags(mask);
对于几乎所有
mask
的std::ios_base::fmtflags
类型。