std::ios_base:: sync_with_stdio
|
static
bool
sync_with_stdio
(
bool
sync
=
true
)
;
|
||
Détermine si les flux C++ standard sont synchronisés avec les flux C standard après chaque opération d'entrée/sortie.
Les flux standard C++ sont les suivants : std::cin , std::cout , std::cerr , std::clog , std::wcin , std::wcout , std::wcerr et std::wclog .
Les flux standards en C sont les suivants : stdin , stdout et stderr .
Pour un flux standard str , synchronisé avec le flux C f , les paires de fonctions suivantes ont un effet identique :
En pratique, cela signifie que les flux C++ synchronisés ne sont pas mis en mémoire tampon, et chaque opération d'E/S sur un flux C++ est immédiatement appliquée au tampon du flux C correspondant. Cela permet de mélanger librement les E/S C++ et C.
De plus, les flux C++ synchronisés garantissent d'être thread-safe (les caractères individuels émis par plusieurs threads peuvent s'entrelacer, mais aucune course aux données ne se produit).
Si la synchronisation est désactivée, les flux standard C++ sont autorisés à mettre en mémoire tampon leurs E/S indépendamment, ce qui peut être considérablement plus rapide dans certains cas.
Par défaut, les huit flux standard C++ sont synchronisés avec leurs flux C respectifs.
Si cette fonction est appelée après qu'une opération d'E/S ait eu lieu sur le flux standard, le comportement est défini par l'implémentation : les implémentations varient de l'absence d'effet à la destruction du tampon de lecture.
Table des matières |
Paramètres
| sync | - | le nouveau paramètre de synchronisation |
Valeur de retour
État de synchronisation avant l'appel à la fonction.
Exemple
#include <cstdio> #include <iostream> int main() { std::ios::sync_with_stdio(false); std::cout << "a\n"; std::printf("b\n"); std::cout << "c\n"; }
Sortie possible :
b a c
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 | Applicable à | Comportement publié | Comportement corrigé |
|---|---|---|---|
| LWG 49 | C++98 |
il n'était pas spécifié (1) quel état est réellement retourné et
(2) ce que signifie 'synchronisé' entre les flux standards C et C++ |
les deux sont spécifiés |
Voir aussi
|
écrit dans le flux de sortie standard C
stdout
(objet global) |
|
|
écrit dans le flux d'erreur standard C
stderr
, non tamponné
(objet global) |
|
|
écrit dans le flux d'erreur standard C
stderr
(objet global) |