流操作器

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

  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 型別。