Namespaces
Variants

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

From cppreference.net
int sync ( ) ;

Synchronise le tampon d'entrée avec la source de données associée.

Se comporte comme une UnformattedInputFunction , à l'exception que gcount() n'est pas affecté. Après la construction et la vérification de l'objet sentinelle,

Si rdbuf() est un pointeur nul, retourne - 1 .

Sinon, appelle rdbuf ( ) - > pubsync ( ) . Si cette fonction retourne - 1 , appelle setstate ( badbit ) et retourne - 1 . Sinon, retourne 0 .

Table des matières

Paramètres

(aucun)

Valeur de retour

0 en cas de succès, - 1 en cas d'échec ou si le flux ne prend pas en charge cette opération (est non tamponné).

Notes

Comme pour readsome() , il est défini par l'implémentation si cette fonction a un effet sur les flux fournis par la bibliothèque. L'intention est généralement que la prochaine opération de lecture récupère les modifications apportées à la séquence d'entrée associée après que le tampon de flux a rempli sa zone de réception. Pour y parvenir, sync() peut vider la zone de réception, la reremplir, ou ne rien faire. Une exception notable est Visual Studio, où cette opération supprime l'entrée non traitée lorsqu'elle est appelée avec un flux d'entrée standard.

Exemple

Illustre l'utilisation du flux d'entrée sync() avec l'entrée de fichier. Notez que la sortie ici est définie par l'implémentation, car les appels à std::basic_filebuf::sync sont définis par l'implémentation pour les lectures.

#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';
}

Sortie possible :

Reading from the file
abc
Reading from the file, with sync()
a23

Rapports de défauts

Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.

DR Appliqué à Comportement tel que publié Comportement correct
LWG 62 C++98 sync() retournait traits :: eof ( ) si rdbuf ( ) - > pubsync ( ) retourne - 1 retourne - 1 dans ce cas

Voir aussi

[virtual]
synchronise les tampons avec la séquence de caractères associée
(fonction membre protégée virtuelle de std::basic_streambuf<CharT,Traits> )
synchronise avec le dispositif de stockage sous-jacent
(fonction membre publique de std::basic_ostream<CharT,Traits> )