std::basic_istream<CharT,Traits>:: sync
|
int
sync
(
)
;
|
||
Synchronisiert den Eingabepuffer mit der zugehörigen Datenquelle.
Verhält sich wie eine UnformattedInputFunction , mit der Ausnahme, dass gcount() nicht beeinflusst wird. Nach dem Konstruieren und Überprüfen des Sentry-Objekts,
Wenn rdbuf() ein null-Zeiger ist, gibt - 1 zurück.
Andernfalls ruft es rdbuf ( ) - > pubsync ( ) auf. Wenn diese Funktion - 1 zurückgibt, ruft es setstate ( badbit ) auf und gibt - 1 zurück. Andernfalls gibt es 0 zurück.
Inhaltsverzeichnis |
Parameter
(keine)
Rückgabewert
0 bei Erfolg, - 1 bei Fehler oder wenn der Stream diesen Vorgang nicht unterstützt (ungebuffert ist).
Hinweise
Wie bei
readsome()
ist implementierungsdefiniert, ob diese Funktion bei bibliotheksbereitgestellten Streams etwas bewirkt. Die Absicht ist typischerweise, dass der nächste Lesevorgang alle Änderungen erfasst, die möglicherweise an der zugehörigen Eingabesequenz vorgenommen wurden, nachdem der Streampuffer zuletzt seinen Get-Bereich gefüllt hat. Um dies zu erreichen, kann
sync()
den Get-Bereich leeren, ihn neu füllen oder nichts tun. Eine bemerkenswerte Ausnahme ist Visual Studio, wo dieser Vorgang die unverarbeitete Eingabe verwirft, wenn er mit einem Standard-Eingabestream aufgerufen wird.
Beispiel
Demonstriert die Verwendung des Eingabestroms
sync()
mit Dateieingabe. Beachten Sie, dass die Ausgabe hier implementierungsdefiniert ist, da Aufrufe von
std::basic_filebuf::sync
für Lesevorgänge implementierungsdefiniert sind.
#include <fstream> #include <iostream> void file_abc() { std::ofstream f("test.txt"); f << "abc\n"; } void file_123() { std::ofstream f("test.txt"); f << "123\n"; } int main() { file_abc(); // file now contains "abc" std::ifstream f("test.txt"); std::cout << "Reading from the file\n"; char c; f >> c; std::cout << c; file_123(); // file now contains "123" f >> c; std::cout << c; f >> c; std::cout << c << '\n'; f.close(); file_abc(); // file now contains "abc" f.open("test.txt"); std::cout << "Reading from the file, with sync()\n"; f >> c; std::cout << c; file_123(); // file now contains "123" f.sync(); f >> c; std::cout << c; f >> c; std::cout << c << '\n'; }
Mögliche Ausgabe:
Reading from the file abc Reading from the file, with sync() a23
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 62 | C++98 |
sync()
gab
traits
::
eof
(
)
zurück, falls
rdbuf
(
)
-
>
pubsync
(
)
-
1
zurückgibt
|
gibt in diesem Fall - 1 zurück |
Siehe auch
|
[virtual]
|
synchronisiert die Puffer mit der assoziierten Zeichensequenz
(virtuelle geschützte Elementfunktion von
std::basic_streambuf<CharT,Traits>
)
|
|
synchronisiert mit dem zugrundeliegenden Speichergerät
(öffentliche Elementfunktion von
std::basic_ostream<CharT,Traits>
)
|