std::strstream:: strstream
From cppreference.net
|
strstream
(
)
;
|
(1) |
(obsoleto en C++98)
(eliminado en C++26) |
|
strstream
(
char
*
s,
int
n,
std::
ios_base
::
openmode
mode
=
std:: ios_base :: in | std:: ios_base :: out ) ; |
(2) |
(obsoleto en C++98)
(eliminado en C++26) |
Construye un nuevo strstream de entrada/salida y su subyacente std::strstreambuf .
1)
Construye por defecto el subyacente
std::strstreambuf
, lo cual crea un búfer de crecimiento dinámico, e inicializa la clase base con la dirección del miembro strstreambuf.
2)
Inicializó la clase base con la dirección del miembro subyacente
std::strstreambuf
, que se inicializa de una de las dos formas posibles, ambas utilizan un arreglo de tamaño fijo proporcionado por el usuario:
a)
si
(
mode
&
app
)
==
0
(el bit
app
no está establecido en
mode
), construye el búfer llamando a
strstreambuf
(
s, n, s
)
. El comportamiento es indefinido si hay menos de
n
elementos en el array cuyo primer elemento está apuntado por
s
.
b)
si
(
mode
&
app
)
!
=
0
(el bit
app
está establecido en
mode
), construye el buffer llamando a
strstreambuf
(
s, n, s
+
std::
strlen
(
s
)
)
. El comportamiento es indefinido si hay menos de
n
elementos en el array cuyo primer elemento está apuntado por
s
o si el array no contiene una secuencia de caracteres válida terminada en nulo.
Contenidos |
Parámetros
| s | - | char array a utilizar como búfer de salida | ||||||||||||||||
| n | - | tamaño del array a utilizar para la salida | ||||||||||||||||
| mode | - |
especifica el modo de apertura del flujo. Es un tipo de máscara de bits, se definen las siguientes constantes (aunque solo se utiliza
app
):
|
Ejemplo
Ejecutar este código
#include <iostream> #include <string> #include <strstream> int main() { // búfer dinámico std::strstream s1; s1 << 1 << ' ' << 3.14 << " example" << std::ends; std::cout << "Buffer holds: '" << s1.str() << "'\n"; s1.freeze(false); int n; double d; std::string w; s1 >> n >> d >> w; std::cout << "Read back: n = " << n << ", d = " << d << ", w = '" << w << "'\n"; // búfer estático char arr[20] = "-1 -3.14 "; std::strstream s2(arr, sizeof arr, std::ios_base::app); s2 << "another" << std::ends; std::cout << "Buffer holds: '" << s2.str() << "'\n"; s2 >> n >> d >> w; std::cout << "Read back: n = " << n << ", d = " << d << ", w = '" << w << "'\n"; }
Salida:
Buffer holds: '1 3.14 example' Read back: n = 1, d = 3.14, w = 'example' Buffer holds: '-1 -3.14 another' Read back: n = -1, d = -3.14, w = 'another'
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 115 | C++98 |
la sobrecarga (2) solo consideraba el caso
mode & app == 0 (
==
tiene mayor precedencia que
&
)
|
considera los casos
(
mode
&
app
)
==
0
y ( mode & app ) ! = 0 |
Véase también
construye un objeto
strstreambuf
(función miembro pública de
std::strstreambuf
)
|
|
construye un objeto
istrstream
, opcionalmente asignando el búfer
(función miembro pública de
std::istrstream
)
|
|
construye un objeto
ostrstream
, opcionalmente asignando el búfer
(función miembro pública de
std::ostrstream
)
|