std::ios_base:: sync_with_stdio
|
static
bool
sync_with_stdio
(
bool
sync
=
true
)
;
|
||
Legt fest, ob die standard C++-Streams nach jedem Eingabe-/Ausgabevorgang mit den standard C-Streams synchronisiert werden.
Die standardmäßigen C++-Streams sind die folgenden: std::cin , std::cout , std::cerr , std::clog , std::wcin , std::wcout , std::wcerr und std::wclog .
Die standardmäßigen C-Streams sind die folgenden: stdin , stdout und stderr .
Für einen Standardstream str , der mit dem C-Stream f synchronisiert ist, haben die folgenden Funktionspaare identische Wirkung:
In der Praxis bedeutet dies, dass die synchronisierten C++-Streams ungepuffert sind und jeder I/O-Vorgang auf einem C++-Stream sofort auf den Puffer des entsprechenden C-Streams angewendet wird. Dies ermöglicht es, C++- und C-I/O frei zu kombinieren.
Zusätzlich sind synchronisierte C++-Streams garantiert threadsicher (einzelne Zeichen, die von mehreren Threads ausgegeben werden, können sich vermischen, aber es treten keine Datenrennen auf).
Wenn die Synchronisierung ausgeschaltet ist, dürfen die C++ Standardstreams ihre E/A unabhängig puffern, was in einigen Fällen erheblich schneller sein kann.
Standardmäßig sind alle acht Standard-C++-Streams mit ihren jeweiligen C-Streams synchronisiert.
Wenn diese Funktion aufgerufen wird, nachdem E/A auf dem Standardstrom stattgefunden hat, ist das Verhalten implementierungsdefiniert: Implementierungen reichen von keiner Auswirkung bis zur Zerstörung des Lesepuffers.
Inhaltsverzeichnis |
Parameter
| sync | - | die neue Synchronisierungseinstellung |
Rückgabewert
Synchronisierungszustand vor dem Aufruf der Funktion.
Beispiel
#include <cstdio> #include <iostream> int main() { std::ios::sync_with_stdio(false); std::cout << "a\n"; std::printf("b\n"); std::cout << "c\n"; }
Mögliche Ausgabe:
b a c
Fehlerberichte
Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.
| DR | Angewendet auf | Verhalten wie veröffentlicht | Korrektes Verhalten |
|---|---|---|---|
| LWG 49 | C++98 |
es war nicht spezifiziert (1) welcher Zustand tatsächlich zurückgegeben wird und
(2) was 'synchronisiert' zwischen Standard-C- und C++-Streams bedeutet |
beide spezifiziert |
Siehe auch
|
schreibt in den standard C-Ausgabestream
stdout
(globales Objekt) |
|
|
schreibt in den standard C-Fehlerstream
stderr
, ungepuffert
(globales Objekt) |
|
|
schreibt in den standard C-Fehlerstream
stderr
(globales Objekt) |