Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      std::unitbuf,std::nounitbuf

      From cppreference.com
      <cpp‎ |io‎ |manip
       
       
       
      Input/output manipulators
      Floating-point formatting
      Integer formatting
      Boolean formatting
      Field width and fill control
      Other formatting
      Whitespace processing
      Output flushing
      unitbufnounitbuf
      Status flags manipulation
      Time and money I/O
      (C++11)
      (C++11)
      (C++11)
      (C++11)
      Quoted manipulator
      (C++14)
       
      Defined in header<ios>
      (1)
      std::ios_base& nounitbuf(std::ios_base& str);
      (2)

      Enables or disables automatic flushing of the output stream after any output operation. Has no effect on input.

      1) Enables theunitbuf flag in the streamstr as if by callingstr.setf(std::ios_base::unitbuf).
      2) Disables theunitbuf flag in the streamstr as if by callingstr.unsetf(std::ios_base::unitbuf).

      This is an I/O manipulator, it may be called with an expression such asout<< std::unitbuf for anyout of typestd::basic_ostream or with an expression such asin>> std::unitbuf for anyin of typestd::basic_istream.

      Contents

      [edit]Notes

      Flushing is performed in the destructor of thestd::basic_ostream::sentry object, which callsstr.rdbuf()->pubsync() ifstr.flags()&std::ios_base::unitbuf istrue.

      The standard output objectsstd::cerr andstd::wcerr have theirunitbuf bit set by default.

      [edit]Parameters

      str - reference to I/O stream

      [edit]Return value

      str (reference to the stream after manipulation).

      [edit]Example

      Withoutstd::unitbuf or another explicit flush, the output is the same, but does not appear in real time.

      Run this code
      #include <chrono>#include <iostream> template<typename Diff>void log_progress(Diff d){std::cout<<std::chrono::duration_cast<std::chrono::milliseconds>(d)<<" ... ";} int main(){volatileint sink=0;std::cout<< std::unitbuf;// enable automatic flushing constauto start=std::chrono::high_resolution_clock::now();for(int j=0; j<5;++j){for(int n=0; n<10000;++n)for(int m=0; m<20000;++m)                sink+= m* n;// do some work        log_progress(std::chrono::high_resolution_clock::now()- start);}std::cout<<'\n';}

      Output:

      571ms ... 1146ms ... 1722ms ... 2294ms ... 2865ms ...

      [edit]See also

      flushes the output stream
      (function template)[edit]
      outputs'\n' and flushes the output stream
      (function template)[edit]
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/io/manip/unitbuf&oldid=159206"

      [8]ページ先頭

      ©2009-2025 Movatter.jp