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
, Alloc
Tr
> 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_filebuf l’étendue de 's équivalent au type du même nom dans l’étendue Tr . |
off_type | Fait de ce type dans basic_filebuf l’étendue de 's équivalent au type du même nom dans l’étendue Tr . |
pos_type | Fait de ce type dans basic_filebuf l’é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
_Méta
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
_Méta
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
_De
Position à rechercher par rapport à _Way. Pour plus d’informations, consultez basic_stringbuf::off_type.
_Manière
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