Namespaces
Variants

std::strstreambuf:: setbuf

From cppreference.net
protected :
virtual streambuf * setbuf ( char * s, std:: streamsize n ) ;
(obsoleto en C++98)
(eliminado en C++26)

Si s es un puntero nulo y n es cero, esta función no tiene efecto.

De lo contrario, el efecto está definido por la implementación: algunas implementaciones no hacen nada, mientras que algunas implementaciones desasignan el array dinámico miembro utilizado como búfer y comienzan a utilizar el array de caracteres proporcionado por el usuario de tamaño n , cuyo primer elemento está señalado por s .

Esta función es protegida virtual, solo puede ser llamada a través de pubsetbuf() o desde funciones miembro de una clase definida por el usuario derivada de std::strstreambuf .

Contenidos

Parámetros

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

Valor de retorno

this

Ejemplo

Prueba de implementación para verificar si setbuf() es compatible con un strstream dinámico (salida obtenida con 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";
}

Salida posible:

user-provided buffer holds "Test string"

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 66 C++98 el efecto de setbuf() era "realiza una operación que está
definida separadamente para cada clase derivada de strstreambuf ",
pero no existen clases derivadas de strstreambuf
el efecto es
definido por la implementación

Véase también

invoca setbuf ( )
(función miembro pública de std::basic_streambuf<CharT,Traits> )
[virtual]
reemplaza el buffer con un array definido por el usuario, si está permitido
(función miembro protegida virtual de std::basic_streambuf<CharT,Traits> )
[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 buffer suministrado por el usuario o convierte este filebuf en no bufferizado
(función miembro protegida virtual de std::basic_filebuf<CharT,Traits> )