std:: flush
|
Definiert in Header
<ostream>
|
||
|
template
<
class
CharT,
class
Traits
>
std:: basic_ostream < CharT, Traits > & flush ( std:: basic_ostream < CharT, Traits > & os ) ; |
||
Leert die Ausgabesequenz os wie durch den Aufruf von os. flush ( ) .
Dies ist ein Nur-Ausgabe-I/O-Manipulator, er kann mit einem Ausdruck wie
out
<<
std
::
flush
für jedes
out
vom Typ
std::basic_ostream
aufgerufen werden.
Inhaltsverzeichnis |
Hinweise
Dieser Manipulator kann verwendet werden, um sofort eine unvollständige Ausgabeziele zu erzeugen, z.B. bei der Anzeige von Ausgaben eines langlaufenden Prozesses, der Protokollierung von Aktivitäten mehrerer Threads oder der Protokollierung von Aktivitäten eines Programms, das unerwartet abstürzen könnte. Ein explizites Leeren des std::cout ist ebenfalls notwendig vor einem Aufruf von std::system , wenn der gestartete Prozess Bildschirm-E/A durchführt (ein häufiges Beispiel ist std:: system ( "pause" ) unter Windows). In den meisten anderen üblichen interaktiven E/A-Szenarien ist std::endl redundant bei Verwendung mit std::cout , weil jede Eingabe von std::cin , Ausgabe an std::cerr oder Programmbeendigung einen Aufruf von std:: cout . flush ( ) erzwingt.
Wenn eine vollständige Ausgabezelle geleert werden muss, kann der std::endl Manipulator verwendet werden.
Wenn jeder Ausgabevorgang gepuffert werden muss, kann der std::unitbuf Manipulator verwendet werden.
Parameter
| os | - | Referenz auf den Ausgabestream |
Rückgabewert
os (Referenz auf den Stream nach der Manipulation).
Beispiel
Ohne
std::flush
wäre die Ausgabe dieselbe, könnte aber nicht in Echtzeit erscheinen.
#include <chrono> #include <iostream> template<typename Diff> void log_progress(Diff d) { std::cout << std::chrono::duration_cast<std::chrono::milliseconds>(d) << " ... " << std::flush; } int main() { volatile int sink = 0; auto t1 = 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 auto now = std::chrono::high_resolution_clock::now(); log_progress(now - t1); } std::cout << '\n'; }
Mögliche Ausgabe:
567ms ... 1137ms ... 1707ms ... 2269ms ... 2842ms ...
Siehe auch
|
steuert, ob die Ausgabe nach jedem Vorgang geleert wird
(Funktion) |
|
|
gibt
'
\n
'
aus und leert den Ausgabestrom
(Funktionsschablone) |
|
|
synchronisiert mit dem zugrundeliegenden Speichergerät
(öffentliche Elementfunktion von
std::basic_ostream<CharT,Traits>
)
|