std:: unitbuf, std:: nounitbuf
|
Definiert in Header
<ios>
|
||
|
std::
ios_base
&
unitbuf
(
std::
ios_base
&
str
)
;
|
(1) | |
|
std::
ios_base
&
nounitbuf
(
std::
ios_base
&
str
)
;
|
(2) | |
Aktiviert oder deaktiviert das automatische Leeren des Ausgabestroms nach jedem Ausgabevorgang. Hat keine Auswirkung auf die Eingabe.
unitbuf
-Flag im Stream
str
, als ob durch Aufruf von
str.
setf
(
std::
ios_base
::
unitbuf
)
.
unitbuf
-Flag im Stream
str
, als ob durch Aufruf von
str.
unsetf
(
std::
ios_base
::
unitbuf
)
.
Dies ist ein I/O-Manipulator, er kann mit einem Ausdruck wie
out
<<
std
::
unitbuf
für jedes
out
vom Typ
std::basic_ostream
oder mit einem Ausdruck wie
in
>>
std
::
unitbuf
für jedes
in
vom Typ
std::basic_istream
aufgerufen werden.
Inhaltsverzeichnis |
Hinweise
Das Leeren des Puffers erfolgt im Destruktor des std::basic_ostream::sentry -Objekts, welcher str. rdbuf ( ) - > pubsync ( ) aufruft, falls str. flags ( ) & std:: ios_base :: unitbuf den Wert true hat.
Die Standardausgabeobjekte
std::cerr
und
std::wcerr
haben ihren
unitbuf
-Bit standardmäßig gesetzt.
Parameter
| str | - | Referenz auf I/O-Stream |
Rückgabewert
str (Referenz auf den Stream nach der Manipulation).
Beispiel
Ohne
std::unitbuf
oder einen anderen expliziten Flush ist die Ausgabe identisch, erscheint jedoch nicht in Echtzeit.
#include <chrono> #include <iostream> template<typename Diff> void log_progress(Diff d) { std::cout << std::chrono::duration_cast<std::chrono::milliseconds>(d) << " ... "; } int main() { volatile int sink = 0; std::cout << std::unitbuf; // enable automatic flushing const auto 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'; }
Ausgabe:
571ms ... 1146ms ... 1722ms ... 2294ms ... 2865ms ...
Siehe auch
|
leert den Ausgabestream
(Funktions-Template) |
|
|
gibt
'
\n
'
aus und leert den Ausgabestream
(Funktions-Template) |