std::basic_ostream<CharT,Traits>::flush
From cppreference.com
< cpp | io | basic ostream
C++
Feature test macros (C++20)
Concepts library (C++20)
Metaprogramming library (C++11)
Ranges library (C++20)
Filesystem library (C++17)
Concurrency support library (C++11)
Execution control library (C++26)
Input/output library
Print functions (C++23)
Buffers
(C++23)
(C++98/26*)
(C++20)
Streams
Abstractions
File I/O
String I/O
Array I/O
(C++23)
(C++23)
(C++23)
(C++98/26*)
(C++98/26*)
(C++98/26*)
Synchronized Output
(C++20)
Types
Error category interface
(C++11)
(C++11)
std::basic_ostream
Member functions
Formatted output
Unformatted output
Positioning
Miscellaneous
Member classes
Non-member functions
Global objects
(C++11)
basic_ostream::flush
(C++11)
(C++23)
(C++23)
(C++23)
(C++23)
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).
[edit] Return value
*this
[edit] Exceptions
May throw std::ios_base::failure if (exceptions() & badbit) != 0.
[edit] Example
Run this code
#include <chrono> #include <iostream> #include <thread> using namespace std::chrono_literals; void f() { std::cout << "Output from thread... "; for (int i{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-time if (0 == (i % 3)) std::cout.flush(); } std::cout << std::endl ; // flushes as well } int main() { std::thread tr{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
[edit] 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 |
[edit] See also
[virtual]
(virtual protected member function of
std::basic_streambuf<CharT,Traits>
) [edit]