Namespaces
Variants

std::strstreambuf:: setbuf

From cppreference.net
protected :
virtual streambuf * setbuf ( char * s, std:: streamsize n ) ;
(obsolète en C++98)
(supprimé en C++26)

Si s est un pointeur nul et n est zéro, cette fonction n'a aucun effet.

Sinon, l'effet est défini par l'implémentation : certaines implémentations ne font rien, tandis que certaines implémentations désallouent le tableau membre dynamique utilisé comme tampon et commencent à utiliser le tableau de caractères fourni par l'utilisateur de taille n , dont le premier élément est pointé par s .

Cette fonction est protégée virtuelle, elle ne peut être appelée qu'à travers pubsetbuf() ou depuis les fonctions membres d'une classe définie par l'utilisateur dérivée de std::strstreambuf .

Table des matières

Paramètres

s - pointeur vers le premier octet dans le tampon fourni par l'utilisateur
n - le nombre d'octets dans le tampon fourni par l'utilisateur

Valeur de retour

this

Exemple

Test d'implémentation pour vérifier si setbuf() est supporté sur un strstream dynamique (résultat obtenu avec Sun Studio) :

#include <iostream>
#include <strstream>
int main()
{
    char a[100] = {};
    std::strstream str;
    str.rdbuf()->pubsetbuf(a, sizeof a);
    str << "Test string" << std::ends;
    std::cout << "user-provided buffer holds \"" << a << "\"\n";
}

Sortie possible :

user-provided buffer holds "Test string"

Rapports de défauts

Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.

DR S'applique à Comportement publié Comportement corrigé
LWG 66 C++98 l'effet de setbuf() était "effectue une opération
définie séparément pour chaque classe dérivée de strstreambuf ",
mais il n'existe pas de classes dérivées de strstreambuf
l'effet est
défini par l'implémentation

Voir aussi

invoque setbuf ( )
(fonction membre publique de std::basic_streambuf<CharT,Traits> )
[virtual]
remplace le tampon par un tableau défini par l'utilisateur, si permis
(fonction membre protégée virtuelle de std::basic_streambuf<CharT,Traits> )
[virtual]
tente de remplacer la séquence de caractères contrôlée par un tableau
(fonction membre protégée virtuelle de std::basic_stringbuf<CharT,Traits,Allocator> )
[virtual]
fournit un tampon fourni par l'utilisateur ou rend ce filebuf non tamponné
(fonction membre protégée virtuelle de std::basic_filebuf<CharT,Traits> )