Namespaces
Variants

std:: basic_syncbuf

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_syncbuf : public std:: basic_streambuf < CharT, Traits >
(depuis C++20)

std::basic_syncbuf est un wrapper pour un std::basic_streambuf (fourni lors de la construction sous forme de pointeur). Il accumule la sortie dans son propre tampon interne et transmet atomiquement l'intégralité de son contenu au tampon encapsulé lors de sa destruction et lorsqu'il est explicitement demandé, de sorte qu'ils apparaissent comme une séquence contiguë de caractères. Il garantit qu'il n'y a pas de courses de données ni d'entrelacement des caractères envoyés au tampon encapsulé tant que toutes les autres sorties effectuées vers le même tampon sont réalisées via, éventuellement différentes, instances de std::basic_syncbuf .

L'implémentation typique de std::basic_syncbuf maintient un pointeur vers le std::basic_streambuf encapsulé, un indicateur booléen spécifiant si le buffer transmettra son contenu au buffer encapsulé lors d'un sync (flush), un indicateur booléen pour un flush en attente lorsque la politique est de ne pas émettre lors d'un sync, un buffer interne utilisant Allocator (tel que std::string ), et un pointeur vers un mutex utilisé pour synchroniser l'émission entre plusieurs threads accédant au même buffer de flux encapsulé (ces mutex peuvent être dans une table de hachage avec des pointeurs vers les objets std::basic_streambuf utilisés comme clés).

Comme les autres classes de tampon de flux, std::basic_syncbuf n'est normalement accessible qu'à travers le flux correspondant, std::osyncstream , et non directement.

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

Défini dans l'en-tête <syncstream>
Type Définition
std::syncbuf std :: basic_syncbuf < char >
std::wsyncbuf std :: basic_syncbuf < 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 >

Fonctions membres

Fonctions membres publiques

construit un objet basic_syncbuf
(fonction membre publique)
assigne un objet basic_syncbuf
(fonction membre publique)
échange deux objets basic_syncbuf
(fonction membre publique)
détruit le basic_syncbuf et émet son tampon interne
(fonction membre publique)
transmet atomiquement l'intégralité du tampon interne au streambuf encapsulé
(fonction membre publique)
récupère le pointeur du streambuf encapsulé
(fonction membre publique)
récupère l'allocateur utilisé par ce basic_syncbuf
(fonction membre publique)
modifie la politique actuelle d'émission à la synchronisation
(fonction membre publique)

Fonctions membres protégées

soit émet, soit enregistre un vidage en attente, selon la politique actuelle d'émission à la synchronisation
(fonction membre publique)

Fonctions non membres

spécialise l'algorithme std::swap
(fonction template)

Hérité de std:: basic_streambuf

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

Fonctions membres

[virtuel]
détruit l'objet basic_streambuf
(fonction membre publique virtuelle de std::basic_streambuf<CharT,Traits> )
Locales
modifie la locale associée et invoque imbue ( )
(fonction membre publique de std::basic_streambuf<CharT,Traits> )
obtient une copie de la locale associée
(fonction membre publique de std::basic_streambuf<CharT,Traits> )
Positionnement
invoque setbuf ( )
(fonction membre publique de std::basic_streambuf<CharT,Traits> )
invoque seekoff ( )
(fonction membre publique de std::basic_streambuf<CharT,Traits> )
invoque seekpos ( )
(fonction membre publique de std::basic_streambuf<CharT,Traits> )
invoque sync ( )
(fonction membre publique de std::basic_streambuf<CharT,Traits> )
Zone de lecture
obtient le nombre de caractères immédiatement disponibles dans la zone de lecture
(fonction membre publique de std::basic_streambuf<CharT,Traits> )
avance la séquence d'entrée, puis lit un caractère sans avancer à nouveau
(fonction membre publique de std::basic_streambuf<CharT,Traits> )
(supprimé en C++17)
lit un caractère de la séquence d'entrée et avance la séquence
(fonction membre publique de std::basic_streambuf<CharT,Traits> )
lit un caractère de la séquence d'entrée sans avancer la séquence
(fonction membre publique de std::basic_streambuf<CharT,Traits> )
invoque xsgetn ( )
(fonction membre publique de std::basic_streambuf<CharT,Traits> )
Zone d'écriture
écrit un caractère dans la zone d'écriture et avance le pointeur suivant
(fonction membre publique de std::basic_streambuf<CharT,Traits> )
invoque xsputn ( )
(fonction membre publique de std::basic_streambuf<CharT,Traits> )
Remise
remet un caractère dans la séquence d'entrée
(fonction membre publique de std::basic_streambuf<CharT,Traits> )
recule le pointeur suivant dans la séquence d'entrée d'une position
(fonction membre publique de std::basic_streambuf<CharT,Traits> )

Fonctions membres protégées

construit un objet basic_streambuf
(fonction membre protégée)
(C++11)
remplace un objet basic_streambuf
(fonction membre protégée)
(C++11)
échange deux basic_streambuf objects
(fonction membre protégée)
Locales
[virtual]
réagit à un changement de la locale associée
(fonction membre protégée virtuelle de std::basic_streambuf<CharT,Traits> )
Positionnement
[virtual]
remplace le tampon par un tableau défini par l'utilisateur, si autorisé
(fonction membre protégée virtuelle de std::basic_streambuf<CharT,Traits> )
[virtual]
repositionne le pointeur suivant dans la séquence d'entrée, la séquence de sortie, ou les deux, en utilisant l'adressage relatif
(fonction membre protégée virtuelle de std::basic_streambuf<CharT,Traits> )
[virtual]
repositionne le pointeur suivant dans la séquence d'entrée, la séquence de sortie, ou les deux en utilisant l'adressage absolu
(fonction membre protégée virtuelle de std::basic_streambuf<CharT,Traits> )
[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> )
Obtenir la surface
[virtual]
obtient le nombre de caractères disponibles en entrée dans la séquence d'entrée associée, si connu
(fonction membre protégée virtuelle de std::basic_streambuf<CharT,Traits> )
[virtual]
lit les caractères de la séquence d'entrée associée vers la zone de réception
(fonction membre protégée virtuelle de std::basic_streambuf<CharT,Traits> )
[virtual]
lit les caractères de la séquence d'entrée associée vers la zone de récupération et avance le pointeur suivant
(fonction membre protégée virtuelle de std::basic_streambuf<CharT,Traits> )
[virtual]
lit plusieurs caractères de la séquence d'entrée
(fonction membre protégée virtuelle de std::basic_streambuf<CharT,Traits> )
renvoie un pointeur vers le début, le caractère courant et la fin de la zone de lecture
(fonction membre protégée)
avance le pointeur suivant dans la séquence d'entrée
(fonction membre protégée)
repositionne les pointeurs de début, suivant et fin de la séquence d'entrée
(fonction membre protégée)
Zone de placement
[virtual]
écrit plusieurs caractères dans la séquence de sortie
(fonction membre protégée virtuelle de std::basic_streambuf<CharT,Traits> )
[virtual]
écrit des caractères dans la séquence de sortie associée depuis la zone de mise en mémoire tampon
(fonction membre protégée virtuelle de std::basic_streambuf<CharT,Traits> )
retourne un pointeur vers le début, le caractère courant et la fin de la zone de mise
(fonction membre protégée)
avance le pointeur suivant de la séquence de sortie
(fonction membre protégée)
repositionne les pointeurs de début, suivant et fin de la séquence de sortie
(fonction membre protégée)
Putback
[virtual]
place un caractère dans la séquence d'entrée, en modifiant potentiellement la séquence d'entrée
(fonction membre protégée virtuelle de std::basic_streambuf<CharT,Traits> )

Notes

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