Namespaces
Variants

std:: basic_osyncstream

From cppreference.net
< cpp ‎ | io
Défini dans l'en-tête <syncstream>
template <

class CharT,
class Traits = std:: char_traits < CharT > ,
class Allocator = std:: allocator < CharT >

> class basic_osyncstream : public std:: basic_ostream < CharT, Traits >
(depuis C++20)

Le modèle de classe std::basic_osyncstream est un wrapper de commodité pour std::basic_syncbuf . Il fournit un mécanisme pour synchroniser les threads écrivant dans le même flux.

Il peut être utilisé avec une variable nommée :

{
    std::osyncstream synced_out(std::cout); // wrapper synchronisé pour std::cout
    synced_out << "Hello, ";
    synced_out << "World!";
    synced_out << std::endl; // le flush est noté, mais pas encore exécuté
    synced_out << "and more!\n";
} // les caractères sont transférés et std::cout est flushé

ainsi qu'avec un temporaire :

std::osyncstream(std::cout) << "Bonjour, " << "Monde !" << '\n';

Il garantit que toute sortie effectuée vers le même tampon de destination final ( std::cout dans les exemples ci-dessus) sera exempte de courses de données et ne sera ni entrelacée ni altérée de quelque manière que ce soit, à condition que chaque écriture vers ce tampon de destination final soit effectuée via (éventuellement différentes) instances de std::basic_osyncstream .

L'implémentation typique de std::basic_osyncstream ne contient qu'un seul membre : le std::basic_syncbuf encapsulé.

cpp/io/ios base cpp/io/basic ios cpp/io/basic ostream std-basic osyncstream-inheritance.svg

Diagramme d'héritage

Plusieurs typedefs pour les types de caractères courants sont fournis :

Défini dans l'en-tête <syncstream>
Type Définition
std::osyncstream std :: basic_osyncstream < char >
std::wosyncstream std :: basic_osyncstream < wchar_t >

Table des matières

Types membres

Type de membre Définition
char_type CharT
traits_type Traits ; le programme est mal formé si Traits::char_type n'est pas CharT .
int_type Traits::int_type
pos_type Traits::pos_type
off_type Traits::off_type
allocator_type Allocator
streambuf_type std:: basic_streambuf < CharT, Traits >
syncbuf_type std:: basic_syncbuf < CharT, Traits, Allocator >

Fonctions membres

construit un objet basic_osyncstream
(fonction membre publique)
assigne un objet basic_osyncstream
(fonction membre publique)
détruit le basic_osyncstream et émet son tampon interne
(fonction membre publique)
obtient un pointeur vers le basic_syncbuf sous-jacent
(fonction membre publique)
obtient un pointeur vers le tampon de flux de destination final
(fonction membre publique)
appelle emit() sur le basic_syncbuf sous-jacent pour transmettre ses données internes vers la destination finale
(fonction membre publique)

Hérité de std:: basic_ostream

Fonctions membres

Sortie formatée
insère des données formatées
(fonction membre publique de std::basic_ostream<CharT,Traits> )
Sortie non formatée
insère un caractère
(fonction membre publique de std::basic_ostream<CharT,Traits> )
insère des blocs de caractères
(fonction membre publique de std::basic_ostream<CharT,Traits> )
Positionnement
retourne l'indicateur de position de sortie
(fonction membre publique de std::basic_ostream<CharT,Traits> )
définit l'indicateur de position de sortie
(fonction membre publique de std::basic_ostream<CharT,Traits> )
Divers
synchronise avec le dispositif de stockage sous-jacent
(fonction membre publique de std::basic_ostream<CharT,Traits> )

Classes membres

implémente la logique de base pour la préparation du flux aux opérations de sortie
(classe membre publique de std::basic_ostream<CharT,Traits> )

Hérité de std:: basic_ios

Types membres

Type membre Définition
char_type CharT
traits_type Traits
int_type Traits::int_type
pos_type Traits::pos_type
off_type Traits::off_type

Fonctions membres

Fonctions d'état
vérifie qu'aucune erreur ne s'est produite, c'est-à-dire que les opérations d'E/S sont disponibles
(fonction membre publique de std::basic_ios<CharT,Traits> )
vérifie si la fin de fichier a été atteinte
(fonction membre publique de std::basic_ios<CharT,Traits> )
vérifie si une erreur s'est produite
(fonction membre publique de std::basic_ios<CharT,Traits> )
vérifie si une erreur non récupérable s'est produite
(fonction membre publique de std::basic_ios<CharT,Traits> )
vérifie si une erreur s'est produite (synonyme de fail() )
(fonction membre publique de std::basic_ios<CharT,Traits> )
vérifie qu'aucune erreur ne s'est produite (synonyme de ! fail() )
(fonction membre publique de std::basic_ios<CharT,Traits> )
retourne les indicateurs d'état
(fonction membre publique de std::basic_ios<CharT,Traits> )
définit les indicateurs d'état
(fonction membre publique de std::basic_ios<CharT,Traits> )
modifie les indicateurs d'état
(fonction membre publique de std::basic_ios<CharT,Traits> )
Formatage
copie les informations de formatage
(fonction membre publique de std::basic_ios<CharT,Traits> )
gère le caractère de remplissage
(fonction membre publique de std::basic_ios<CharT,Traits> )
Divers
gère le masque d'exceptions
(fonction membre publique de std::basic_ios<CharT,Traits> )
définit la locale
(fonction membre publique de std::basic_ios<CharT,Traits> )
gère le tampon de flux associé
(fonction membre publique de std::basic_ios<CharT,Traits> )
gère le flux lié
(fonction membre publique de std::basic_ios<CharT,Traits> )
rétrécit les caractères
(fonction membre publique de std::basic_ios<CharT,Traits> )
élargit les caractères
(fonction membre publique de std::basic_ios<CharT,Traits> )

Hérité de std:: ios_base

Fonctions membres

Formatage
gère les indicateurs de format
(fonction membre publique de std::ios_base )
définit un indicateur de format spécifique
(fonction membre publique de std::ios_base )
efface un indicateur de format spécifique
(fonction membre publique de std::ios_base )
gère la précision décimale des opérations en virgule flottante
(fonction membre publique de std::ios_base )
gère la largeur du champ
(fonction membre publique de std::ios_base )
Locales
définit la locale
(fonction membre publique de std::ios_base )
retourne la locale actuelle
(fonction membre publique de std::ios_base )
Tableau extensible interne
[static]
retourne un entier unique à l'échelle du programme qui peut être utilisé en toute sécurité comme index pour pword() et iword()
(fonction membre statique publique de std::ios_base )
redimensionne le stockage privé si nécessaire et accède à l'élément long à l'index donné
(fonction membre publique de std::ios_base )
redimensionne le stockage privé si nécessaire et accède à l'élément void * à l'index donné
(fonction membre publique de std::ios_base )
Divers
enregistre la fonction de rappel d'événement
(fonction membre publique de std::ios_base )
définit si les bibliothèques d'E/S C++ et C sont interopérables
(fonction membre statique publique de std::ios_base )
Classes membres
exception de flux
(classe membre publique de std::ios_base )
initialise les objets de flux standard
(classe membre publique de std::ios_base )

Types membres et constantes

Type Explication
type de mode d'ouverture de flux

Les constantes suivantes sont également définies :

Constante Explication
app se positionner à la fin du flux avant chaque écriture
binary ouvrir en mode binaire
in ouvrir en lecture
out ouvrir en écriture
trunc vider le contenu du flux lors de l'ouverture
ate se positionner à la fin du flux immédiatement après l'ouverture
noreplace (C++23) ouvrir en mode exclusif

(typedef)
Type des indicateurs de formatage

Les constantes suivantes sont également définies :

Constante Explication
dec utilise la base décimale pour les E/S entières : voir std::dec
oct utilise la base octale pour les E/S entières : voir std::oct
hex utilise la base hexadécimale pour les E/S entières : voir std::hex
basefield dec | oct | hex . Utile pour les opérations de masquage
left alignement à gauche (ajoute des caractères de remplissage à droite) : voir std::left
right alignement à droite (ajoute des caractères de remplissage à gauche) : voir std::right
internal alignement interne (ajoute des caractères de remplissage au point désigné interne) : voir std::internal
adjustfield left | right | internal . Utile pour les opérations de masquage
scientific génère les types à virgule flottante en utilisant la notation scientifique, ou la notation hexadécimale si combiné avec fixed : voir std::scientific
fixed génère les types à virgule flottante en utilisant la notation fixe, ou la notation hexadécimale si combiné avec scientific : voir std::fixed
floatfield scientific | fixed . Utile pour les opérations de masquage
boolalpha insère et extrait le type bool en format alphanumérique : voir std::boolalpha
showbase génère un préfixe indiquant la base numérique pour la sortie entière, requiert l'indicateur monétaire dans les E/S monétaires : voir std::showbase
showpoint génère un caractère de point décimal inconditionnellement pour la sortie des nombres à virgule flottante : voir std::showpoint
showpos génère un caractère + pour la sortie numérique non négative : voir std::showpos
skipws ignore les espaces blancs initiaux avant certaines opérations d'entrée : voir std::skipws
unitbuf vide la sortie après chaque opération de sortie : voir std::unitbuf
uppercase remplace certaines lettres minuscules par leurs équivalents majuscules dans certaines opérations de sortie : voir std::uppercase

(typedef)
type d'état du flux

Les constantes suivantes sont également définies :

Constante Explication
goodbit aucune erreur
badbit erreur de flux irrécupérable
failbit échec de l'opération d'entrée/sortie (erreur de formatage ou d'extraction)
eofbit la séquence d'entrée associée a atteint la fin du fichier

(typedef)
Type de direction de positionnement

Les constantes suivantes sont également définies :

Constante Explication
beg le début d'un flux
end la fin d'un flux
cur la position actuelle de l'indicateur de position du flux

(typedef)
spécifie le type d'événement
(enum)
type de fonction de rappel
(typedef)

Notes

Macro de test de fonctionnalité Valeur Std Fonctionnalité
__cpp_lib_syncbuf 201803L (C++20) Flux de sortie synchronisé avec tampon ( std::osyncstream , std::syncbuf ) et manipulateurs