Namespaces
Variants

std::basic_istream<CharT,Traits>:: sync

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