Namespaces
Variants

std::strstreambuf:: strstreambuf

From cppreference.net
(1)
explicit strstreambuf ( std:: streamsize alsize = 0 ) ;
(obsoleto en C++98)
(hasta C++11)
strstreambuf ( ) : strstreambuf ( 0 ) { }
explicit strstreambuf ( std:: streamsize alsize ) ;
(desde C++11) (eliminado en C++26)
strstreambuf ( void * ( * palloc ) ( std:: size_t ) , void ( * pfree ) ( void * ) ) ;
(2) (obsoleto en C++98)
(eliminado en C++26)
strstreambuf ( char * gnext, std:: streamsize n, char * pbeg = 0 ) ;
(3) (obsoleto en C++98)
(eliminado en C++26)
strstreambuf ( signed char * gnext, std:: streamsize n, signed char * pbeg = 0 ) ;
(4) (obsoleto en C++98)
(eliminado en C++26)
strstreambuf ( unsigned char * gnext, std:: streamsize n, unsigned char * pbeg = 0 ) ;
(5) (obsoleto en C++98)
(eliminado en C++26)
strstreambuf ( const char * gnext, std:: streamsize n ) ;
(6) (obsoleto en C++98)
(eliminado en C++26)
strstreambuf ( const signed char * gnext, std:: streamsize n ) ;
(7) (obsoleto en C++98)
(eliminado en C++26)
strstreambuf ( const unsigned char * gnext, std:: streamsize n ) ;
(8) (obsoleto en C++98)
(eliminado en C++26)
1) Construye un objeto std::strstreambuf : inicializa la clase base llamando al constructor por defecto de std::streambuf , inicializa el estado del búfer como "dinámico" (el búfer se asignará según sea necesario), inicializa el tamaño asignado al valor proporcionado alsize , inicializa las funciones de asignación y liberación a nulo (usará new [ ] y delete [ ] ).
2) Construye un objeto std::strstreambuf : inicializa la clase base llamando al constructor por defecto de std::streambuf , inicializa el estado del búfer como "dinámico" (el búfer se asignará según sea necesario), inicializa el tamaño asignado a un valor no especificado, inicializa la función de asignación a palloc y la función de desasignación a pfree .
3-5) Construye un objeto std::strstreambuf en los siguientes pasos:
a) Inicializa la clase base llamando al constructor por defecto de std::streambuf .
b) Inicializa el estado del búfer a "constante" (el búfer es un búfer de tamaño fijo proporcionado por el usuario).
c) Determina el número de elementos en el array proporcionado por el usuario de la siguiente manera: si n es mayor que cero, n se utiliza. Si n es cero, std:: strlen ( gnext ) se ejecuta para determinar el tamaño del buffer. Si n es negativo, INT_MAX se utiliza.
d) Configura los punteros de std::basic_streambuf de la siguiente manera: Si pbeg es un puntero nulo, llama a setg ( gnext, gnext, gnext + N ) . Si pbeg no es un puntero nulo, ejecuta setg ( gnext, gnext, pbeg ) y setp ( pbeg, pbeg + N ) , donde N es el número de elementos en el array determinado anteriormente.
6-8) Igual que strstreambuf ( ( char * ) gnext, n ) , excepto que el bit "constante" está establecido en la máscara de bits de estado del búfer (no se permite la salida a este búfer).

Contenidos

Parámetros

alsize - el tamaño inicial del búfer asignado dinámicamente
palloc - puntero a la función de asignación proporcionada por el usuario
pfree - puntero a la función de desasignación proporcionada por el usuario
gnext - puntero al inicio del área de obtención en el arreglo proporcionado por el usuario
pbeg - puntero al inicio del área de colocación en el arreglo proporcionado por el usuario
n - el número de bytes en el área de obtención (si pbeg es nulo) o en el área de colocación (si pbeg no es nulo) del arreglo proporcionado por el usuario

Notas

Estos constructores son típicamente llamados por los constructores de std:: strstream .

Informes de defectos

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

DR Applied to Behavior as published Correct behavior
P0935R0 C++11 el constructor por defecto era explícito hecho implícito

Ejemplo

#include <iostream>
#include <strstream>
int main()
{
    std::strstreambuf dyn; // dinámico
    std::strstream dyn_s; // flujo equivalente
    dyn_s << 1.23 << std::ends;
    std::cout << dyn_s.str() << '\n';
    dyn_s.freeze(false);
    char buf[10];
    std::strstreambuf user(buf, 10, buf); // búfer de salida proporcionado por el usuario
    std::ostrstream user_s(buf, 10); // flujo equivalente
    user_s << 1.23 << std::ends;
    std::cout << buf << '\n';
    std::strstreambuf lit("1 2 3", 5); // constante
    std::istrstream lit_s("1 2 3"); // flujo equivalente
    int i, j, k;
    lit_s >> i >> j >> k;
    std::cout << i << ' ' << j << ' ' << k << '\n';
}

Salida:

1.23
1.23
1 2 3

Véase también

construye un objeto strstream , opcionalmente asignando el buffer
(función miembro pública de std::strstream )