Partager via


basic_stringbuf, classe

Décrit une mémoire tampon de flux qui contrôle la transmission d'éléments de type Elem, dont les caractéristiques sont déterminées par la classe Tr, vers et à partir d'une séquence d'éléments stockés dans un objet de tableau.

Syntaxe

template <class Elem, class Tr = char_traits<Elem>,
    class Alloc = allocator<Elem>>
class basic_stringbuf : public basic_streambuf<Elem, Tr>

Paramètres

Alloc
Classe allocator.

Elem
Type de l'élément de base de la chaîne.

Tr
Caractéristique spécialisée sur l'élément de base de la chaîne.

Notes

L'objet est alloué, étendu et libéré en fonction des modifications apportées à la séquence.

Objet de classe basic_stringbuf<Elem, AllocTr> stocke une copie de l’argument ios_base::openmode à partir de son constructeur en mode stringbuf mode :

  • Si mode & ios_base::in est différent de zéro, la mémoire tampon d'entrée est accessible. Pour plus d’informations, consultez basic_streambuf, classe.

  • Si mode & ios_base::out est différent de zéro, la mémoire tampon de sortie est accessible.

Constructeurs

Constructeur Description
basic_stringbuf Construit un objet de type basic_stringbuf.

Typedefs

Nom de type Description
allocator_type Le type est un synonyme du paramètre de modèle Alloc.
char_type Associe un nom de type au paramètre de modèle Elem.
int_type Fait de ce type dans basic_filebufl’étendue de 's équivalent au type du même nom dans l’étendue Tr .
off_type Fait de ce type dans basic_filebufl’étendue de 's équivalent au type du même nom dans l’étendue Tr .
pos_type Fait de ce type dans basic_filebufl’étendue de 's équivalent au type du même nom dans l’étendue Tr .
traits_type Associe un nom de type au paramètre de modèle Tr.

Fonctions Membre

Fonction membre Description
overflow Fonction virtuelle protégée qui peut être appelée quand un nouveau caractère est inséré dans une mémoire tampon saturée.
pbackfail La fonction membre virtuelle protégée tente de remettre un élément dans la mémoire tampon d'entrée, puis en fait l'élément actif (vers lequel pointe le pointeur suivant).
seekoff La fonction membre virtuelle protégée tente de modifier les positions actuelles des flux contrôlés.
seekpos La fonction membre virtuelle protégée tente de modifier les positions actuelles des flux contrôlés.
str Obtient ou définit le texte dans une mémoire tampon de chaîne sans modifier la position d'écriture.
swap
underflow Fonction membre virtuelle protégée pour extraire l'élément actif du flux d'entrée.

Spécifications

Header :<sstream>

Espace de noms : std

basic_stringbuf ::allocator_type

Le type est un synonyme du paramètre de modèle Alloc.

typedef Alloc allocator_type;

basic_stringbuf ::basic_stringbuf

Construit un objet de type basic_stringbuf.

basic_stringbuf(
    ios_base::openmode _Mode = ios_base::in | ios_base::out);

basic_stringbuf(
    const basic_string<Elem, Tr, Alloc>& str,
    ios_base::openmode _Mode = ios_base::in | ios_base::out);

Paramètres

_Mode
Une des énumérations dans ios_base::openmode.

str
Objet de type basic_string.

Notes

Le premier constructeur stocke un pointeur null dans tous les pointeurs contrôlant la mémoire tampon d’entrée et la mémoire tampon de sortie. Pour plus d’informations, consultez la section Notes de basic_streambuf, classe. Il stocke également _Mode en mode stringbuf. Pour plus d’informations, consultez la section Notes de basic_streambuf, classe.

Le deuxième constructeur alloue une copie de la séquence contrôlée par la chaîne str d’objet. Si _Mode & ios_base::in est différent de zéro, elle définit la mémoire tampon d’entrée pour commencer la lecture au début de la séquence. Si _Mode & ios_base::out est différent de zéro, elle définit la mémoire tampon de sortie pour commencer l’écriture au début de la séquence. Il stocke également _Mode en mode stringbuf. Pour plus d’informations, consultez la section Notes de basic_streambuf, classe.

basic_stringbuf ::char_type

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

typedef Elem char_type;

basic_stringbuf ::int_type

Fait de ce type dans l’étendue de basic_filebuf l’équivalent du type du même nom dans l’étendue Tr .

typedef typename traits_type::int_type int_type;

basic_stringbuf ::off_type

Fait de ce type dans l’étendue de basic_filebuf l’équivalent du type du même nom dans l’étendue Tr .

typedef typename traits_type::off_type off_type;

basic_stringbuf ::overflow

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

virtual int_type overflow(int_type _Meta = traits_type::eof());

Paramètres

_Meta
Caractère à insérer dans la mémoire tampon, ou traits_type::eof.

Valeur de retour

Si la fonction ne peut pas réussir, elle retourne traits_type::eof. Sinon, elle retourne traits_type::not_eof(_ Meta).

Notes

Si _Meta ne correspond pas à traits_type ::eof, la fonction membre virtuelle protégée tente d’insérer l’élément traits_type ::to_char_type(_Meta) dans la mémoire tampon de sortie. Elle peut le faire de différentes manières :

  • Si une position d’écriture est disponible, elle peut stocker l’élément dans la position d’écriture et incrémenter le pointeur suivant pour la mémoire tampon de sortie.

  • Elle peut rendre disponible une position d’écriture en allouant du stockage nouveau ou supplémentaire à la mémoire tampon de sortie. Cette façon d’étendre la mémoire tampon de sortie permet également d’étendre les mémoires tampons d’entrée associées.

basic_stringbuf ::p backfail

La fonction membre virtuelle protégée tente de replacer un élément dans la mémoire tampon d’entrée, puis d’en faire l’élément actif (vers lequel pointe le pointeur suivant).

virtual int_type pbackfail(int_type _Meta = traits_type::eof());

Paramètres

_Meta
Caractère à insérer dans la mémoire tampon, ou traits_type::eof.

Valeur de retour

Si la fonction ne peut pas réussir, elle retourne traits_type::eof. Sinon, elle retourne traits_type::not_eof(_ Meta).

Notes

Si _Meta compare égale à traits_type ::eof, l’élément à renvoyer est effectivement celui déjà dans le flux avant l’élément actuel. Sinon, cet élément est remplacé par byte = traits_type::to_char_type(_ Meta). La fonction peut remettre un élément de différentes manières :

  • Si une position de remise est disponible et que la valeur de l’élément stocké est égale à byte, elle peut décrémenter le pointeur suivant pour la mémoire tampon d’entrée.

  • Si une position de remise est disponible et si le mode stringbuf permet de modifier la séquence ( mode & ios_base::out différent de zéro), elle peut stocker byte dans la position de remise et décrémenter le pointeur suivant pour la mémoire tampon d’entrée.

basic_stringbuf ::p os_type

Fait de ce type dans l’étendue de basic_filebuf l’équivalent du type du même nom dans l’étendue Tr .

typedef typename traits_type::pos_type pos_type;

basic_stringbuf ::seekoff

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

virtual pos_type seekoff(
    off_type _Off,
    ios_base::seekdir _Way,
    ios_base::openmode _Mode = ios_base::in | ios_base::out);

Paramètres

_Off
Position à rechercher par rapport à _Way. Pour plus d’informations, consultez basic_stringbuf::off_type.

_Façon
Point de départ des opérations de décalage. Consultez ios_base::seekdir pour connaître les valeurs possibles.

_Mode
Spécifie le mode pour la position du pointeur. Par défaut, vous êtes autorisé à modifier les positions de lecture et d’écriture. Pour plus d’informations, consultez ios_base::openmode.

Valeur de retour

Retourne la nouvelle position ou une position de flux non valide.

Notes

Pour un objet de classe basic_stringbuf<Elem, Tr, Alloc>, une position de flux se compose uniquement d’un décalage de flux. Le décalage zéro désigne le premier élément de la séquence contrôlée.

La nouvelle position est déterminée comme suit :

  • Si _Way == ios_base::beg, la nouvelle position est le début du flux plus _Off.

  • Si _Way == ios_base::cur, la nouvelle position est la position actuelle du flux plus _Off.

  • Si _Way == ios_base::end, la nouvelle position est la fin du flux plus _Off.

Si _Mode & ios_base::in est différent de zéro, la fonction modifie la position suivante à lire dans la mémoire tampon d’entrée. Si _Mode & ios_base::out est différent de zéro, la fonction modifie la position suivante à écrire dans la mémoire tampon de sortie. Pour qu’un flux soit affecté, sa mémoire tampon doit exister. Pour qu’une opération de positionnement réussisse, la position de flux obtenue doit se trouver dans la séquence contrôlée. Si la fonction affecte les deux positions de flux, _Way doit être ios_base::beg ou ios_base::end les deux flux sont positionnés au même élément. Sinon (ou si aucune position n’est affectée), l’opération de positionnement échoue.

Si la fonction réussit à modifier une ou les deux positions de flux, elle retourne la position de flux obtenue. Sinon, elle échoue et retourne une position de flux non valide.

basic_stringbuf ::seekpos

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

virtual pos_type seekpos(pos_type _Sp, ios_base::openmode _Mode = ios_base::in | ios_base::out);

Paramètres

_Sp
Position à rechercher.

_Mode
Spécifie le mode pour la position du pointeur. Par défaut, vous êtes autorisé à modifier les positions de lecture et d’écriture.

Valeur de retour

Si la fonction réussit à modifier une ou les deux positions de flux, elle retourne la position de flux obtenue. Sinon, elle échoue et retourne une position de flux non valide. Pour déterminer si la position du flux est non valide, comparez la valeur de retour à pos_type(off_type(-1)).

Notes

Pour un objet de classe basic_stringbuf<Elem, Tr, Alloc>une position de flux se compose uniquement d’un décalage de flux. Le décalage zéro désigne le premier élément de la séquence contrôlée. La nouvelle position est déterminée par _ Sp.

Si mode & ios_base::in est différent de zéro, la fonction modifie la position suivante à lire dans la mémoire tampon d’entrée. Si mode & ios_base::out est différent de zéro, la fonction modifie la position suivante à écrire dans la mémoire tampon de sortie. Pour qu’un flux soit affecté, sa mémoire tampon doit exister. Pour qu’une opération de positionnement réussisse, la position de flux obtenue doit se trouver dans la séquence contrôlée. Sinon (ou si aucune position n’est affectée), l’opération de positionnement échoue.

basic_stringbuf ::str

Obtient ou définit le texte dans une mémoire tampon de chaîne sans modifier la position d'écriture.

basic_string<Elem, Tr, Alloc> str() const;
void str(
    const basic_string<Elem, Tr, Alloc>& _Newstr);

Paramètres

_Newstr
La nouvelle chaîne.

Valeur de retour

Renvoie un objet de classe basic_string<Elem, Tr, Alloc>, dont la séquence contrôlée est une copie de la séquence contrôlée par .*this

Notes

La première fonction membre retourne un objet de classe basic_string<Elem, Tr, Alloc>dont la séquence contrôlée est une copie de la séquence contrôlée par *this. La séquence copiée dépend du mode stringbuf stocké :

  • Si mode & ios_base::out est différent de zéro et qu’une mémoire tampon de sortie existe, la séquence est la mémoire tampon de sortie entière ( epptr - pbase éléments commençant par pbase).

  • Si mode & ios_base::in est différent de zéro et qu’une mémoire tampon d’entrée existe, la séquence est la mémoire tampon d’entrée entière ( egptr - eback éléments commençant par eback).

  • Sinon, la séquence copiée est vide.

La deuxième fonction membre libère n’importe quelle séquence actuellement contrôlée par *this. Il alloue ensuite une copie de la séquence contrôlée par _Newstr. Si mode & ios_base::in est différent de zéro, elle définit la mémoire tampon d’entrée pour commencer la lecture au début de la séquence. Si mode & ios_base::out est différent de zéro, elle définit la mémoire tampon de sortie pour commencer l’écriture au début de la séquence.

Exemple

// basic_stringbuf_str.cpp
// compile with: /EHsc
#include <iostream>
#include <sstream>

using namespace std;

int main( )
{
   basic_string<char> i( "test" );
   stringstream ss;

   ss.rdbuf( )->str( i );
   cout << ss.str( ) << endl;

   ss << "z";
   cout << ss.str( ) << endl;

   ss.rdbuf( )->str( "be" );
   cout << ss.str( ) << endl;
}
test
zest
be

basic_stringbuf ::traits_type

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

typedef Tr traits_type;

Notes

Le type est un synonyme du paramètre de modèle Tr.

basic_stringbuf ::underflow

Fonction virtuelle protégée pour extraire l'élément actif du flux d'entrée.

virtual int_type underflow();

Valeur de retour

Si la fonction ne peut pas réussir, elle retourne traits_type ::eof. Sinon, elle retourne l’élément actuel dans le flux d’entrée, qui est converti.

Notes

La fonction membre virtuelle protégée tente d’extraire l’élément byte actuel de la mémoire tampon d’entrée, d’avancer la position du flux actuel et de renvoyer l’élément en tant que traits_type ::to_int_type( octet). Il peut le faire d’une manière unique : si une position de lecture est disponible, elle prend byte comme élément stocké dans la position de lecture et avance le pointeur suivant pour la mémoire tampon d’entrée.

basic_streambuf ::swap

Permute le contenu de cette mémoire tampon de chaîne avec une autre mémoire tampon de chaîne.

void basic_stringbuf<T>::swap(basic_stringbuf& other)

Paramètres

other
basic_stringbuf dont le contenu sera permuté avec ce basic_stringbuf.

Notes

basic_stringbuf ::operator=

Assigne le contenu de basic_stringbuf à droite de l’opérateur à basic_stringbuf à gauche.

basic_stringbuf& basic_stringbuf:: operator=(const basic_stringbuf& other)

Paramètres

other
Un basic_stringbuf dont le contenu, y compris les caractéristiques des paramètres régionaux, sera assigné au stringbuf à gauche de l'opérateur.

Notes

Voir aussi

Sécurité des threads dans la bibliothèque C++ Standard
iostream, programmation
iostreams, conventions