Namespaces
Variants

std::ios_base:: sync_with_stdio

From cppreference.net
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:

1) std:: fputc ( f, c ) und str. rdbuf ( ) - > sputc ( c ) .
2) std:: fgetc ( f ) und str. rdbuf ( ) - > sbumpc ( ) .
3) std:: ungetc ( c, f ) und str. rdbuf ( ) - > sputbackc ( c ) .

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)