流操作器
操作器可以以其他方式使用。例如:
-
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;(其中 ## - 是连接运算符 )
用于下一个
flags:boolalpha,showbase,showpoint,showpos,skipws,uppercase。 -
std::ios_base::basefield。
对于flags: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。
对于flags: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;为
flags: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)为
flags: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类型。