std::strstreambuf:: setbuf
|
protected
:
virtual streambuf * setbuf ( char * s, std:: streamsize n ) ; |
(in C++98 veraltet)
(in C++26 entfernt) |
|
Wenn s ein Nullzeiger ist und n null ist, hat diese Funktion keine Auswirkung.
Andernfalls ist der Effekt implementierungsdefiniert: Manche Implementierungen tun nichts, während andere Implementierungen das dynamische Member-Array, das als Puffer verwendet wird, freigeben und beginnen, das benutzerdefinierte Zeichenarray der Größe n zu verwenden, dessen erstes Element durch s gezeigt wird.
Diese Funktion ist geschützt virtuell, sie darf nur über
pubsetbuf()
oder von Memberfunktionen einer benutzerdefinierten Klasse aufgerufen werden, die von
std::strstreambuf
abgeleitet ist.
Inhaltsverzeichnis |
Parameter
| s | - | Zeiger auf das erste Byte im benutzerbereitgestellten Puffer |
| n | - | die Anzahl der Bytes im benutzerbereitgestellten Puffer |
Rückgabewert
this
Beispiel
Implementierungstest zur Überprüfung, ob
setbuf()
auf einem dynamischen strstream unterstützt wird (Ausgabe erhalten mit Sun Studio):
#include <iostream> #include <strstream> int main() { char a[100] = {}; std::strstream str; str.rdbuf()->pubsetbuf(a, sizeof a); str << "Test string" << std::ends; std::cout << "user-provided buffer holds \"" << a << "\"\n"; }
Mögliche Ausgabe:
user-provided buffer holds "Test string"
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 66 | C++98 |
die Wirkung von
setbuf()
war "führt einen Vorgang aus, der
separat für jede von
strstreambuf
abgeleitete Klasse definiert ist",
aber es gibt keine von
strstreambuf
abgeleiteten Klassen
|
die Wirkung ist
implementierungsdefiniert |
Siehe auch
|
ruft
setbuf
(
)
auf
(öffentliche Elementfunktion von
std::basic_streambuf<CharT,Traits>
)
|
|
|
[virtual]
|
ersetzt den Puffer durch ein benutzerdefiniertes Array, falls erlaubt
(virtuelle geschützte Elementfunktion von
std::basic_streambuf<CharT,Traits>
)
|
|
[virtual]
|
versucht, die gesteuerte Zeichensequenz durch ein Array zu ersetzen
(virtuelle geschützte Elementfunktion von
std::basic_stringbuf<CharT,Traits,Allocator>
)
|
|
[virtual]
|
stellt einen benutzerbereitgestellten Puffer bereit oder macht diesen filebuf ungepuffert
(virtuelle geschützte Elementfunktion von
std::basic_filebuf<CharT,Traits>
)
|