std::strstreambuf::setbuf
| protected: virtual streambuf* setbuf( char* s, std::streamsize n ); |
(veraltet in C++98) (entfernt in C++26) |
|
Wenn s ein Nullzeiger ist und n null ist, hat diese Funktion keine Auswirkung.
Andernfalls ist die Auswirkung implementierungsabhängig: Einige Implementierungen tun nichts, während einige Implementierungen das dynamische Member-Array, das als Puffer verwendet wird, deallokieren und mit dem vom Benutzer bereitgestellten Zeichen-Array der Größe n beginnen, dessen erstes Element auf s zeigt.
Diese Funktion ist geschützt virtuell und kann nur über pubsetbuf() oder von Memberfunktionen einer von std::strstreambuf abgeleiteten Benutzerklasse aufgerufen werden.
Inhalt |
[edit] Parameter
| s | - | Zeiger auf das erste Byte im vom Benutzer bereitgestellten Puffer |
| n | - | Die Anzahl der Bytes im vom Benutzer bereitgestellten Puffer |
[edit] Rückgabewert
this
[edit] Beispiel
Implementierungstest zur Überprüfung, ob setbuf() für einen dynamischen strstream unterstützt wird (Ausgabe mit Sun Studio erhalten)
#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"
[edit] Fehlerberichte
Die folgenden Verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.
| DR | angewendet auf | Verhalten wie veröffentlicht | Korrigiertes Verhalten |
|---|---|---|---|
| LWG 66 | C++98 | Die Auswirkung von setbuf() wurde als "führt eine Operation aus, diegetrennt für jede von strstreambuf abgeleitete Klasse definiert ist" beschrieben,aber es gibt keine von strstreambuf abgeleiteten Klassen |
Die Auswirkung ist implementierungsdefiniert |
[edit] Siehe auch
| ruft setbuf() auf (öffentliche Member-Funktion von std::basic_streambuf<CharT,Traits>) | |
| [virtuell] |
ersetzt den Puffer durch ein benutzerdefiniertes Array, falls zulässig (virtuelle geschützte Member-Funktion von std::basic_streambuf<CharT,Traits>) |
| [virtuell] |
versucht, die gesteuerte Zeichensequenz durch ein Array zu ersetzen (virtuelle geschützte Memberfunktion von std::basic_stringbuf<CharT,Traits,Allocator>) |
| [virtuell] |
stellt einen vom Benutzer bereitgestellten Puffer bereit oder macht diesen Filebuf unbuffered (virtuelle geschützte Memberfunktion von std::basic_filebuf<CharT,Traits>) |