Namespaces
Variants

std::strstreambuf:: setbuf

From cppreference.net
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> )