C++Manipolatori di flusso


introduzione

I manipolatori sono speciali funzioni di supporto che aiutano a controllare i flussi di input e output usando l' operator >> o l' operator << .

Tutti possono essere inclusi da #include <iomanip> .

Osservazioni

I manipolatori possono essere utilizzati in altro modo. Per esempio:

  1. os.width(n); uguale a os << std::setw(n);
    is.width(n); è uguale a is >> std::setw(n);

  1. os.precision(n); equivale a os << std::setprecision(n);
    is.precision(n); è uguale a is >> std::setprecision(n);

  1. os.setfill(c); uguale a os << std::setfill(c);

  1. str >> std::setbase(base); o str << std::setbase(base); uguale a
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); equivale a os << std::flag;
    is.setf(std::ios_base::flag); è uguale a is >> std::flag;

    os.unsetf(std::ios_base::flag); equivale a os << std::no ## flag;
    is.unsetf(std::ios_base::flag); è uguale a is >> std::no ## flag;

    (dove ## - è operatore di concatenazione )

    per la flag successiva s: boolalpha , showbase , showpoint , showpos , skipws , uppercase .

  1. std::ios_base::basefield .
    Per flag s: dec , hex e oct :
  • os.setf(std::ios_base::flag, std::ios_base::basefield); equivale a os << std::flag;
    is.setf(std::ios_base::flag, std::ios_base::basefield); è uguale a is >> std::flag;
    (1)

  • str.unsetf(std::ios_base::flag, std::ios_base::basefield); equivale a str.setf(std::ios_base::fmtflags(0), std::ios_base::basefield);
    (2)

  1. std::ios_base::adjustfield .
    Per le flag : left , right e internal :
  • os.setf(std::ios_base::flag, std::ios_base::adjustfield); equivale a os << std::flag;
    is.setf(std::ios_base::flag, std::ios_base::adjustfield); è uguale a is >> std::flag;
    (1)

  • str.unsetf(std::ios_base::flag, std::ios_base::adjustfield); equivale a str.setf(std::ios_base::fmtflags(0), std::ios_base::adjustfield);
    (2)

(1) Se il flag del campo corrispondente precedentemente impostato è già stato unsetf da unsetf .
(2) Se il flag è impostato.

  1. std::ios_base::floatfield .
  • os.setf(std::ios_base::flag, std::ios_base::floatfield); equivale a os << std::flag;
    is.setf(std::ios_base::flag, std::ios_base::floatfield); è uguale a is >> std::flag;

    per flag s: fixed e scientific .

  • os.setf(std::ios_base::fmtflags(0), std::ios_base::floatfield); equivale a os << std::defaultfloat;
    is.setf(std::ios_base::fmtflags(0), std::ios_base::floatfield); è uguale a is >> std::defaultfloat;

  1. str.setf(std::ios_base::fmtflags(0), std::ios_base::flag); equivale a str.unsetf(std::ios_base::flag)

    per flag s: basefield , campo di adjustfield , campo floatfield .

  1. os.setf(mask) uguale a os << setiosflags(mask);
    is.setf(mask) uguale a is >> setiosflags(mask);

    os.unsetf(mask) uguale a os << resetiosflags(mask);
    is.unsetf(mask) uguale a is >> resetiosflags(mask);

    Per quasi tutte le mask di tipo std::ios_base::fmtflags .

Manipolatori di flusso Esempi correlati