std::strstreambuf:: strstreambuf
From cppreference.net
<
cpp
|
io
|
strstreambuf
| (1) | ||
|
explicit
strstreambuf
(
std::
streamsize
alsize
=
0
)
;
|
(in C++98 veraltet)
(bis C++11) |
|
|
strstreambuf
(
)
:
strstreambuf
(
0
)
{
}
explicit strstreambuf ( std:: streamsize alsize ) ; |
(seit C++11) (entfernt in C++26) | |
|
strstreambuf
(
void
*
(
*
palloc
)
(
std::
size_t
)
,
void
(
*
pfree
)
(
void
*
)
)
;
|
(2) |
(in C++98 veraltet)
(entfernt in C++26) |
|
strstreambuf
(
char
*
gnext,
std::
streamsize
n,
char
*
pbeg
=
0
)
;
|
(3) |
(in C++98 veraltet)
(entfernt in C++26) |
|
strstreambuf
(
signed
char
*
gnext,
std::
streamsize
n,
signed
char
*
pbeg
=
0
)
;
|
(4) |
(in C++98 veraltet)
(entfernt in C++26) |
|
strstreambuf
(
unsigned
char
*
gnext,
std::
streamsize
n,
unsigned
char
*
pbeg
=
0
)
;
|
(5) |
(in C++98 veraltet)
(entfernt in C++26) |
|
strstreambuf
(
const
char
*
gnext,
std::
streamsize
n
)
;
|
(6) |
(in C++98 veraltet)
(entfernt in C++26) |
|
strstreambuf
(
const
signed
char
*
gnext,
std::
streamsize
n
)
;
|
(7) |
(in C++98 veraltet)
(entfernt in C++26) |
|
strstreambuf
(
const
unsigned
char
*
gnext,
std::
streamsize
n
)
;
|
(8) |
(in C++98 veraltet)
(entfernt in C++26) |
1)
Konstruiert ein
std::strstreambuf
-Objekt: initialisiert die Basisklasse durch Aufruf des Standardkonstruktors von
std::streambuf
, initialisiert den Pufferzustand auf "dynamisch" (der Puffer wird bei Bedarf allokiert), initialisiert die allokierte Größe auf den bereitgestellten
alsize
, initialisiert die Allokations- und Deallokationsfunktionen auf null (verwendet
new
[
]
und
delete
[
]
).
2)
Konstruiert ein
std::strstreambuf
-Objekt: initialisiert die Basisklasse durch Aufruf des Standardkonstruktors von
std::streambuf
, initialisiert den Pufferzustand auf "dynamisch" (der Puffer wird bei Bedarf allokiert), initialisiert die allokierte Größe auf einen nicht spezifizierten Wert, initialisiert die Allokationsfunktion auf
palloc
und die Deallokationsfunktion auf
pfree
.
3-5)
Konstruiert ein
std::strstreambuf
-Objekt in folgenden Schritten:
a)
Initialisiert die Basisklasse durch Aufruf des Standardkonstruktors von
std::streambuf
.
b)
Initialisiert den Pufferzustand als "konstant" (der Puffer ist ein benutzerbereitgestellter Puffer fester Größe).
c)
Bestimmt die Anzahl der Elemente im benutzerdefinierten Array wie folgt: wenn
n
größer als Null ist, wird
n
verwendet. Wenn
n
Null ist, wird
std::
strlen
(
gnext
)
ausgeführt, um die Puffergröße zu bestimmen. Wenn
n
negativ ist, wird
INT_MAX
verwendet.
d)
Konfiguriert die
std::basic_streambuf
-Zeiger wie folgt: Wenn
pbeg
ein Nullzeiger ist, ruft
setg
(
gnext, gnext, gnext
+
N
)
auf. Wenn
pbeg
kein Nullzeiger ist, führt
setg
(
gnext, gnext, pbeg
)
und
setp
(
pbeg, pbeg
+
N
)
aus, wobei N die Anzahl der Elemente im Array ist, wie zuvor bestimmt.
6-8)
Gleich wie
strstreambuf
(
(
char
*
)
gnext, n
)
, außer dass das "constant"-Bit in der Pufferstatus-Bitmaske gesetzt ist (Ausgabe an diesen Puffer ist nicht erlaubt).
Inhaltsverzeichnis |
Parameter
| alsize | - | die anfängliche Größe des dynamisch allokierten Puffers |
| palloc | - | Zeiger auf die benutzerdefinierte Allokierungsfunktion |
| pfree | - | Zeiger auf die benutzerdefinierte Freigabefunktion |
| gnext | - | Zeiger auf den Start des Lesebereichs im benutzerdefinierten Array |
| pbeg | - | Zeiger auf den Start des Schreibbereichs im benutzerdefinierten Array |
| n | - | die Anzahl der Bytes im Lesebereich (wenn pbeg null ist) oder im Schreibbereich (wenn pbeg nicht null ist) des benutzerdefinierten Arrays |
Hinweise
Diese Konstruktoren werden typischerweise von den Konstruktoren von std:: strstream aufgerufen.
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 |
|---|---|---|---|
| P0935R0 | C++11 | Standardkonstruktor war explicit | implizit gemacht |
Beispiel
Diesen Code ausführen
#include <iostream> #include <strstream> int main() { std::strstreambuf dyn; // dynamisch std::strstream dyn_s; // äquivalenter Stream 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); // benutzerbereitgestellter Ausgabepuffer std::ostrstream user_s(buf, 10); // äquivalenter Stream user_s << 1.23 << std::ends; std::cout << buf << '\n'; std::strstreambuf lit("1 2 3", 5); // konstant std::istrstream lit_s("1 2 3"); // äquivalenter Stream int i, j, k; lit_s >> i >> j >> k; std::cout << i << ' ' << j << ' ' << k << '\n'; }
Ausgabe:
1.23 1.23 1 2 3
Siehe auch
Konstruiert ein
strstream
-Objekt, optional mit Allokierung des Puffers
(öffentliche Elementfunktion von
std::strstream
)
|