std::strstreambuf:: strstreambuf
From cppreference.net
<
cpp
|
io
|
strstreambuf
| (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
Ejecutar este código
#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
)
|