std::basic_ostream<CharT,Traits>::flush - cppreference.com

From cppreference.com

basic_ostream&flush();Writes uncommitted changes to the underlying output sequence. Behaves as an

UnformattedOutputFunction

.

If

rdbuf()

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

std::ios_base::failure

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

LWG 581

C++98 flush() did not behave as an

UnformattedOutputFunction

because of the resolution of

LWG issue 60

behaves as an

UnformattedOutputFunction

See also

invokes sync()
(public member function of std::basic_streambuf<CharT,Traits>)

[edit]

[virtual]

synchronizes the buffers with the associated character sequence
(virtual protected member function of std::basic_streambuf<CharT,Traits>)

[edit]

flushes the output stream
(function template)

[edit]

outputs '\n' and flushes the output stream
(function template)

[edit]

synchronizes with the underlying storage device
(public member function of std::basic_istream<CharT,Traits>)

[edit]