Looking for c++ Answers? Try Ask4KnowledgeBase
Looking for c++ Keywords? Try Ask4Keywords

C++ストリームマニピュレータ


前書き

マニピュレータは、 operator >>またはoperator <<を使用して入力ストリームと出力ストリームを制御するのに役立つ特別なヘルパー関数です。

それらは#include <iomanip>によってすべて含めることができます。

備考

マニピュレータは他の方法で使用することができます。例えば:

  1. os.width(n); os << std::setw(n);と等しくなりos << std::setw(n);
    is.width(n); is >> std::setw(n);と等しくなりis >> std::setw(n);

  1. os.precision(n); os << std::setprecision(n);と等しくなりos << std::setprecision(n);
    is.precision(n); is >> std::setprecision(n);と等しくなりis >> std::setprecision(n);

  1. os.setfill(c); os << std::setfill(c);と等しくなりos << std::setfill(c);

  1. 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;と等しくなりos << std::flag;
    is.setf(std::ios_base::flag); is >> std::flag;等しくなりis >> std::flag;

    os.unsetf(std::ios_base::flag); os << std::no ## flag;と等しくなりos << std::no ## flag;
    is.unsetf(std::ios_base::flag); is >> std::no ## flag;と等しいis >> std::no ## flag;

    ## - 連結演算子

    次のflag s: boolalphashowbaseshowpointshowposskipwsuppercase

  1. std::ios_base::basefield
    flag sの場合: dechexoct
  • os.setf(std::ios_base::flag, std::ios_base::basefield); os << std::flag;と等しくなりos << std::flag;
    is.setf(std::ios_base::flag, std::ios_base::basefield); is >> std::flag;等しくなり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
    flag sの場合: leftrightinternal
  • os.setf(std::ios_base::flag, std::ios_base::adjustfield); os << std::flag;と等しくなりos << std::flag;
    is.setf(std::ios_base::flag, std::ios_base::adjustfield); is >> std::flag;等しくなり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によって既に設定解除されているunsetf
(2) flagがセットされている場合。

  1. std::ios_base::floatfield
  • os.setf(std::ios_base::flag, std::ios_base::floatfield); os << std::flag;と等しくなりos << std::flag;
    is.setf(std::ios_base::flag, std::ios_base::floatfield); is >> std::flag;等しくなりis >> std::flag;

    flagのために: fixedscientific

  • os.setf(std::ios_base::fmtflags(0), std::ios_base::floatfield); os << std::defaultfloat;と等しくなりos << std::defaultfloat;
    is.setf(std::ios_base::fmtflags(0), std::ios_base::floatfield); is >> std::defaultfloat;と等しいis >> std::defaultfloat;

  1. str.setf(std::ios_base::fmtflags(0), std::ios_base::flag); str.unsetf(std::ios_base::flag)と同じstr.unsetf(std::ios_base::flag)

    flag sの場合: basefieldadjustfieldfloatfield

  1. os.setf(mask)は、 os << setiosflags(mask);と同じos << setiosflags(mask);
    is.setf(mask)は次のものis >> setiosflags(mask);同じis >> setiosflags(mask);

    os.unsetf(mask)os << resetiosflags(mask); os.unsetf(mask)と等しくなりos << resetiosflags(mask);
    is.unsetf(mask)は次のようになりis >> resetiosflags(mask);

    ほぼすべてのstd::ios_base::fmtflags maskです。

ストリームマニピュレータ 関連する例