From cppreference.com
basic_ostream&flush();Writes uncommitted changes to the underlying output sequence. Behaves as an
.
If
is a null pointer, the sentry object is not constructed.
Otherwise, after constructing and checking the sentry object, calls rdbuf()->pubsync(). If the call returns -1, calls setstate(badbit).
Return value
*this
Exceptions
May throw
if (exceptions()&badbit)!=0.
Example
Run this code
#include<chrono>#include<iostream>#include<thread>usingnamespacestd::chrono_literals;voidf(){std::cout<<"Output from thread... ";for(inti{1};i!=10;++i){std::this_thread::sleep_for(250ms);std::cout<<i<<' ';// output three numbers at once;// the effect is observable only in real-timeif(0==(i%3))std::cout.flush();}std::cout<<std::endl;// flushes as well}intmain(){std::threadtr{f};std::this_thread::sleep_for(150ms);std::clog<<"Output from main\n";tr.join();}Output:
Output from main Output from thread... 1 2 3 4 5 6 7 8 9 Defect reports
The following behavior-changing defect reports were applied retroactively to previously published C++ standards.
DR Applied to Behavior as published Correct behavior
C++98 flush() did not behave as an
because of the resolution of
behaves as an
See also
invokes sync()
(public member function of std::basic_streambuf<CharT,Traits>)
[virtual]
synchronizes the buffers with the associated character sequence
(virtual protected member function of std::basic_streambuf<CharT,Traits>)
flushes the output stream
(function template)
outputs '\n' and flushes the output stream
(function template)
synchronizes with the underlying storage device
(public member function of std::basic_istream<CharT,Traits>)