Partager via


basic_streambuf, classe

Décrit une classe de base abstraite pour dériver une mémoire tampon de flux, qui contrôle la transmission des éléments vers et à partir d'une représentation spécifique d'un flux de données.

template<class Elem, class Tr = char_traits<Elem> >
   class basic_streambuf;

Paramètres

Notes

Le modèle de classe décrit une classe de base abstraite pour dériver une mémoire tampon de flux, qui contrôle la transmission des éléments vers et à partir d'une représentation spécifique d'un flux de données. Un objet de class basic_streambuf aide à contrôler un flux de données avec des éléments de type Tr, alias char_type, dont les traits de caractère sont déterminés par la classe char_traits, alias traits_type.

Chaque tampon du flux de contrôle de manière conceptuelle deux flux indépendants: un pour les extractions (entrée) et un pour les insertions (output). Une représentation spécifique peut, toutefois, rendre l'un, ou les deux flux inaccessibles. Elle maintient généralement une certaine relation entre les deux flux de données. Ce que vous insérez dans le flux de sortie d'un objet basic_stringbuf<Elem, Tr> , par exemple, est ce que vous extrayez plus tard de son flux de sortie. Lorsque vous positionnez un flux d'un objet basic_filebuf<Elem, Tr>, vous positionnez l'autre flux de données en tandem.

L'interface publique de la classe de modèle basic_streambuf propose les opérations communes à toutes les mémoires tampons de flux, aussi spécialisées soient elles. L'interface protogée propose les opérations nécessaires à une représentation spécifique d'un flux de données pour effectuer ses tâches. Les fonctions membres virtuelles protégées vous permettent de personnaliser le comportement d'une mémoire tampon de flux dérivée pour une représentation spécifique d'un flux de données. Chaque tampon de flux dérivée de cette bibliothèque explique comment il spécialise le comportement de ses fonctions membres virtuelles protégées. Le comportement par défaut de la classe de base, qui est souvent de ne rien faire, est décrit dans cette rubrique.

Les fonctions membre protégées restantes contrôlent la copie vers et depuis n'importe quel stockage disponible pour mettre des transmissions en mémoire tampon vers et à partir de flux de données. Une mémoire tampon d'entrée, par exemple, se caractérise par :

  • eback, un pointeur vers le début de la mémoire tampon.

  • gptr, un pointeur vers l'élément suivant à lire.

  • egptr, un pointeur immédiatement après la fin de la mémoire tampon.

De même, un tampon de sortie se caractérise par :

  • pbase, un pointeur vers le début de la mémoire tampon.

  • pptr, un pointeur vers l'élément suivant à écrire.

  • epptr, un pointeur immédiatement après la fin de la mémoire tampon.

Pour toute mémoire tampon, le protocole suivant est utilisé:

  • Si le prochain pointeur est NULL, aucune mémoire tampon n'existe. Sinon, les trois pointers pointent dans la même séquence. Ils peuvent être sans risque comparés pour l'ordre de plan.

  • Pour une mémoire tampon de sortie, si le prochain pointeur compare moins que le pointeur de fin, vous pouvez stocker un élément à la position d'écriture désignée par le prochain pointeur.

  • Pour une mémoire tampon d'entrée, si le prochain pointeur compare moins que le pointeur de fin, vous pouvez lire un élément à la position de lecture désignée par le prochain pointeur.

  • Pour une mémoire tampon d'entrée, si le pointeur de début compare moins que le prochain pointeur, vous pouvez remettre un élément à la position de "putback" indiquée par le prochain pointeur décrémenté.

Toutes les fonctions membre virtuelles protégées que vous écrivez comme classe dérive de basic_streambuf<Elem, Tr> doivent coopérer pour conserver ce protocole.

Un objet de la classe basic_streambuf<Elem, Tr> stocke les six pointeurs précédemment décrits. Il stocke également un objet de paramètres régionaux dans un objet de type locale pour une utilisation potentielle par une tampon de flux dérivé.

Constructeurs

basic_streambuf

Construit un objet de type basic_streambuf.

Typedef

caractère (type)

Associe un nom de type avec le paramètre de modèle Elem.

int (type)

Associe un nom de type à l'intérieur de basic_streambuf avec le paramètre de modèle Elem.

off_type

Associe un nom de type à l'intérieur de basic_streambuf avec le paramètre de modèle Elem.

pos_type

Associe un nom de type à l'intérieur de basic_streambuf avec le paramètre de modèle Elem.

traits_type

Associe un nom de type avec le paramètre de modèle Tr.

Fonctions membres

eback

Une fonction protégée qui retourne un pointeur vers le début du tampon d'entrée.

egptr

Une fonction protégée qui retourne un pointeur immédiatement après la fin de la mémoire tampon d'entrée.

epptr

Une fonction protégée qui retourne un pointeur immédiatement après la fin de la mémoire tampon de sortie.

gbump

Une fonction protégée qui ajoute _Count au prochain pointeur pour le tampon d'entrée.

getloc

Obtient le basic_streambuf des paramètres locaux de l'objet.

gptr

Une fonction protégée qui retourne un pointeur vers l'élément suivant de la mémoire tampon d'entrée.

imbue

Un protégé, fonction virtuelle appelée par pubimbue.

in_avail

Retourne le nombre d'éléments prêts à être lus à partir du tampon.

dépassement de capacité

Une fonction virtuelle protégée qui peut être appelée lorsqu'un nouveau caractère est inséré dans une mémoire tampon saturée.

pbackfail

Une fonction membre virtuelle protégée qui tente de remettre un élément dans le flux d'entrée, puis fait de lui l'élément actuel (référencé par le prochain pointeur).

pbase

Une fonction protégée qui retourne un pointeur vers le début du tampon de sortie.

pbump

Une fonction protégée qui ajoute count au prochain pointeur pour le tampon de sortie.

pptr

Une fonction protégée qui retourne un pointeur vers l'élément suivant de la mémoire tampon de sortie.

pubimbue

Fixe le basic_streambuf des paramètres locaux de l'objet.

pubseekoff

Appelle seekoff, une fonction virtuelle protégée qui est remplacée dans une classe dérivée.

pubseekpos

Appelle seekpos, une fonction virtuelle protégée qui est remplacée dans une classe dérivée et réinitialise l'emplacement actuel du pointeur.

pubsetbuf

Appelle setbuf,une fonction virtuelle protégée qui est remplacée dans une classe dérivée.

pubsync

Appelle synchronisation, une fonction virtuelle protégée qui est remplacée dans une classe dérivée et met à jour le flux de données externe associé à cette mémoire tampon.

sbumpc

Lectures et retourne l'élément actuel, déplaçant le pointeur de flux.

seekoff

La fonction membre virtuelle protégée tente de modifier les positions actuelles pour les flux de données contrôlés.

seekpos

La fonction membre virtuelle protégée tente de modifier les positions actuelles pour les flux de données contrôlés.

setbuf

La fonction membre virtuelle protégée exécute une opération particulière à chaque tampon de flux dérivée.

setg

Une fonction protégée qui stocke _Gbeg dans le pointeur du début, _Gnext dans le prochain pointeur, et _Gend dans le pointeur de fin du tampon d'entrée.

setp

Une fonction protégée qui stocke _Pend dans le pointeur du début et _Pbeg dans le pointeur de fin pour le tampon de sortie.

sgetc

Retourne l'élément actuel sans modifier la position dans le flux de données.

sgetn

Retourne le nombre d'éléments lus.

showmanyc

Fonction membre virtuelle protégée qui retourne le nombre de caractères qui peuvent être extraits du flux d'entrée et vérifie que le programme n'est pas sujet à une attente indéfinie.

snextc

Lit l'élément actuel et retourne l'élément suivant.

sputbackc

Met un char_type dans le flux de données.

sputc

Place un caractère dans le flux.

sputn

Place une chaîne de caractère dans le flux.

stossc

Passe devant l'élément actuel dans le flux de données.

sungetc

Récupère un caractère du flux .

échange

Échange les valeurs de cet objet avec celles fournies par le paramètre objet basic_streambuf.

sync

Une fonction virtuelle protégée qui tente de synchroniser les flux de données contrôlés avec n'importe quels flux externes associés.

uflow

Une fonction virtuelle protégée qui extrait l'élément actuel du flux d'entrée.

underflow

Une fonction virtuelle protégée qui extrait l'élément actuel du flux d'entrée.

xsgetn

Une fonction virtuelle protégée qui extrait des éléments du flux d'entrée.

xsputn

Une fonction virtuelle protégée qui insère des éléments dans le flux de sortie.

Opérateurs

operator=

Affecte les valeurs de cet objet à partir d'un autre objet de basic_streambuf.

Configuration requise

En-tête: <streambuf>

Espace de noms : std

Voir aussi

Référence

Sécurité des threads dans la bibliothèque standard C++

iostream, programmation

iostreams, conventions

Autres ressources

membres de basic_streambuf

<streambuf> membres