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) Llama setbuf ( s, n ) de la clase más derivada.
2) La versión de la clase base de esta función no tiene efecto. Las clases derivadas pueden sobrescribir esta función para permitir la eliminación o reemplazo de la secuencia de caracteres controlada (el búfer) con un arreglo proporcionado por el usuario, o para cualquier otro propósito específico de la implementación.

Contenidos

Parámetros

s - puntero al primer CharT en el búfer proporcionado por el usuario
n - el número de elementos CharT en el búfer proporcionado por el usuario

Valor de retorno

1) El valor de retorno de setbuf ( s, n ) .
2) this

Ejemplo

Proporciona un búfer de 10k para lectura. En Linux, la utilidad strace puede usarse para observar el número real de bytes leídos.

#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';
}

Salida posible:

356010

Informes de defectos

Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares de C++ publicados anteriormente.

DR Aplicado a Comportamiento publicado Comportamiento correcto
LWG 158 C++98 el comportamiento por defecto de setbuf solo se especificaba
si gptr() no es nulo y no es igual a egptr()
especificado como no-operación
para todos los casos

Véase también

[virtual]
intenta reemplazar la secuencia de caracteres controlada con un array
(función miembro protegida virtual de std::basic_stringbuf<CharT,Traits,Allocator> )
[virtual]
proporciona un búfer suministrado por el usuario o convierte este filebuf en no almacenado en búfer
(función miembro protegida virtual de std::basic_filebuf<CharT,Traits> )
[virtual]
intenta reemplazar la secuencia de caracteres controlada con un array
(función miembro protegida virtual de std::strstreambuf )
establece el búfer para un flujo de archivo
(función)