流操作器

操作器可以以其他方式使用。例如:

  1. os.width(n); 等于 os << std::setw(n);
    is.width(n); 等于 is >> std::setw(n);

  2. os.precision(n); 等于 os << std::setprecision(n);
    is.precision(n); 等于 is >> std::setprecision(n);

  3. os.setfill(c); 等于 os << std::setfill(c);

  4. 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);
  1. 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: boolalphashowbaseshowpointshowposskipwsuppercase

  2. std::ios_base::basefield
    对于 flags: dechexoct

  • 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)

  1. std::ios_base::adjustfield
    对于 flags: leftrightinternal
  • 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

  1. 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: fixedscientific

  • 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;

  1. str.setf(std::ios_base::fmtflags(0), std::ios_base::flag); 等于 str.unsetf(std::ios_base::flag)

    flags: basefieldadjustfieldfloatfield

  2. os.setf(mask) 等于 os << setiosflags(mask);
    is.setf(mask) 等于 is >> setiosflags(mask);

    os.unsetf(mask) 等于 os << resetiosflags(mask);
    is.unsetf(mask) 等于 is >> resetiosflags(mask);

    对于几乎所有 maskstd::ios_base::fmtflags 类型。