std::basic_istream<CharT,Traits>:: sync
|
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>
)
|