Namespaces
Variants

std::basic_streambuf<CharT,Traits>:: pubsetbuf, std::basic_streambuf<CharT,Traits>:: setbuf

From cppreference.net
public :
basic_streambuf < CharT, Traits > * pubsetbuf ( char_type * s, std:: streamsize n )
(1)
protected :
virtual basic_streambuf < CharT, Traits > * setbuf ( char_type * s, std:: streamsize n )
(2)
1) Appelle setbuf ( s, n ) de la classe la plus dérivée.
2) La version de la fonction de la classe de base n'a aucun effet. Les classes dérivées peuvent redéfinir cette fonction pour permettre la suppression ou le remplacement de la séquence de caractères contrôlée (le tampon) par un tableau fourni par l'utilisateur, ou pour toute autre finalité spécifique à l'implémentation.

Table des matières

Paramètres

s - pointeur vers le premier CharT dans le tampon fourni par l'utilisateur
n - le nombre d'éléments CharT dans le tampon fourni par l'utilisateur

Valeur de retour

1) La valeur de retour de setbuf ( s, n ) .
2) this

Exemple

Fournit un tampon de 10k pour la lecture. Sous Linux, l'utilitaire strace peut être utilisé pour observer le nombre réel d'octets lus.

#include <fstream>
#include <iostream>
#include <string>
int main()
{
    int cnt = 0;
    std::ifstream file;
    char buf[1024 * 10 + 1];
    file.rdbuf()->pubsetbuf(buf, sizeof buf);
    file.open("/usr/share/dict/words");
    for (std::string line; getline(file, line);)
        ++cnt;
    std::cout << cnt << '\n';
}

Sortie possible :

356010

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 Applicable à Comportement publié Comportement corrigé
LWG 158 C++98 le comportement par défaut de setbuf n'était spécifié
que si gptr() n'est pas nul et n'est pas égal à egptr()
spécifié comme sans opération
pour tous les cas

Voir aussi

[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> )
[virtual]
tente de remplacer la séquence de caractères contrôlée par un tableau
(fonction membre protégée virtuelle de std::strstreambuf )
définit le tampon pour un flux de fichier
(fonction)