std::strstream:: strstream
From cppreference.net
|
strstream
(
)
;
|
(1) |
(veraltet in C++98)
(entfernt in C++26) |
|
strstream
(
char
*
s,
int
n,
std::
ios_base
::
openmode
mode
=
std:: ios_base :: in | std:: ios_base :: out ) ; |
(2) |
(veraltet in C++98)
(entfernt in C++26) |
Konstruiert einen neuen Eingabe-/Ausgabestrstream und seinen zugrundeliegenden std::strstreambuf .
1)
Default-konstruiert den zugrundeliegenden
std::strstreambuf
, was einen dynamisch wachsenden Puffer erzeugt, und initialisiert die Basisklasse mit der Adresse des strstreambuf-Members.
2)
Initialisierte die Basisklasse mit der Adresse des zugrundeliegenden
std::strstreambuf
Members, der auf eine von zwei möglichen Weisen initialisiert wird, wobei beide eine benutzerdefinierte feste Größe des Arrays verwenden:
a)
wenn
(
mode
&
app
)
==
0
(das
app
-Bit ist nicht in
mode
gesetzt), konstruiert den Puffer durch Aufruf von
strstreambuf
(
s, n, s
)
. Das Verhalten ist undefiniert, wenn weniger als
n
Elemente im Array vorhanden sind, dessen erstes Element durch
s
gezeigt wird.
b)
if
(
mode
&
app
)
!
=
0
(das
app
-Bit ist in
mode
gesetzt), konstruiert den Puffer durch Aufruf von
strstreambuf
(
s, n, s
+
std::
strlen
(
s
)
)
. Das Verhalten ist undefiniert, wenn das Array, dessen erstes Element durch
s
gezeigt wird, weniger als
n
Elemente enthält oder wenn das Array keine gültige nullterminierte Zeichenfolge enthält.
Inhaltsverzeichnis |
Parameter
| s | - | char Array, das als Ausgabepuffer verwendet wird | ||||||||||||||||
| n | - | Größe des Arrays für die Ausgabe | ||||||||||||||||
| mode | - |
gibt den Öffnungsmodus des Streams an. Es handelt sich um einen Bitmask-Typ, die folgenden Konstanten sind definiert (obwohl nur
app
verwendet wird):
|
Beispiel
Diesen Code ausführen
#include <iostream> #include <string> #include <strstream> int main() { // dynamischer Puffer 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"; // statischer Puffer 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"; }
Ausgabe:
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'
Fehlerberichte
Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.
| DR | Angewendet auf | Verhalten wie veröffentlicht | Korrektes Verhalten |
|---|---|---|---|
| LWG 115 | C++98 |
Überladung (2) berücksichtigte nur den Fall
mode & app == 0 (
==
hat höhere Priorität als
&
)
|
berücksichtigt Fälle
(
mode
&
app
)
==
0
und ( mode & app ) ! = 0 |
Siehe auch
konstruiert ein
strstreambuf
Objekt
(öffentliche Elementfunktion von
std::strstreambuf
)
|
|
konstruiert ein
istrstream
Objekt, optional mit Pufferzuweisung
(öffentliche Elementfunktion von
std::istrstream
)
|
|
konstruiert ein
ostrstream
Objekt, optional mit Pufferzuweisung
(öffentliche Elementfunktion von
std::ostrstream
)
|