Partager via


strstreambuf::strstreambuf

Construit un objet de type strstreambuf.

explicit strstreambuf( 
   streamsize _Count = 0 
); 
strstreambuf( 
   void ( *_Allocfunc )( size_t ), 
   void ( *_Freefunc )( void * ) 
); 
strstreambuf( 
   char *_Getptr,  
   streamsize _Count, 
   char *_Putptr = 0 
); 
strstreambuf( 
   signed char *_Getptr,  
   streamsize _Count, 
   signed char *_Putptr = 0 
); 
strstreambuf( 
   unsigned char *_Getptr, 
   streamsize _Count, 
   unsigned char *_Putptr = 0 
); 
strstreambuf( 
   const char *_Getptr,  
   streamsize _Count 
); 
strstreambuf( 
   const signed char *_Getptr,  
   streamsize _Count 
); 
strstreambuf( 
   const unsigned char *_Getptr,  
   streamsize _Count 
);

Paramètres

  • _Allocfunc
    La fonction utilisée pour allouer la mémoire tampon.

  • _Count
    Détermine la taille de la mémoire tampon vers laquelle pointe _Getptr. Si _Getptr n'est pas un argument (premier formulaire de constructeur), la taille d'allocation suggérée pour les mémoires tampon.

  • _Freefunc
    La fonction utilisée pour libérer la mémoire tampon.

  • _Getptr
    Une mémoire tampon utilisée pour l'entrée.

  • _Putptr
    Une mémoire tampon utilisée pour la sortie.

Notes

Le premier constructeur enregistre un pointeur null dans tous les pointeurs contrôlant le tampon d'entrée et le tampon de sortie, et l'allocation strstreambuf. Il définit le mode de strstreambuf stockée pour rendre la séquence contrôlée modifiable et extensible. Il accepte également _Count comme une taille initiale suggérée d'allocation.

Le deuxième constructeur se comporte comme la première, sauf qu'il stocke _Allocfunc en tant que pointeur à la fonction à appeler pour allouer le stockage et _Freefunc en tant que pointeur sur la fonction à appeler pour libérer le stockage.

Les trois constructeurs :

strstreambuf(char *_Getptr, streamsize count,
    char *putptr = 0);
strstreambuf(signed char *_Getptr, streamsize count,
    signed char *putptr = 0);
strstreambuf(unsigned char *_Getptr, streamsize count,
    unsigned char *putptr = 0);

se comportent comme le premier, sauf que _Getptr indique l'objet table utilisé pour contenir la séquence contrôlée. (Par conséquent, il ne doit pas être un pointeur null.) Le nombre d'éléments N dans le tableau est déterminé comme suit :

  • Si_Count > (0), alors N est count.

  • Si (_Count == 0), alors N est strlen( (const char *)_Getptr ).

  • Si (_Count < 0), alors N est INT_MAX.

Si _Putptr est un pointeur null, la fonction génère immédiatement un tampon d'entrée en exécutant :

setg(_Getptr, _Getptr, _Getptr + N);

Sinon, elle génère les deux mémoires tampons d'entrée et de sortie en exécutant :

setg(_Getptr, _Getptr, _Putptr);
setp(_Putptr, _Getptr + N);

Dans ce cas, _Putptr doit être dans l'intervalle [_Getptr, _Getptr + N].

Enfin, les trois constructeurs :

strstreambuf(const char *_Getptr, streamsize _Count);
strstreambuf(const signed char *_Getptr, streamsize _Count);
strstreambuf(const unsigned char *_Getptr, streamsize _Count);

se comportent tous de la même manière que :

streambuf( (char *)_Getptr, _Count );

mais le mode stocké rend la séquence contrôlée ni modifiable ni extensible.

Configuration requise

En-tête : <strstream>

Espace de noms : std

Voir aussi

Référence

strstreambuf, classe

iostream, programmation

iostreams, conventions