Namensräume
Varianten
Aktionen

std::strstreambuf::setbuf

Von cppreference.com
< cpp‎ | io‎ | strstreambuf
 
 
 
 
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, die
getrennt 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>) [bearbeiten]
[virtuell]
ersetzt den Puffer durch ein benutzerdefiniertes Array, falls zulässig
(virtuelle geschützte Member-Funktion von std::basic_streambuf<CharT,Traits>) [bearbeiten]
[virtuell]
versucht, die gesteuerte Zeichensequenz durch ein Array zu ersetzen
(virtuelle geschützte Memberfunktion von std::basic_stringbuf<CharT,Traits,Allocator>) [bearbeiten]
[virtuell]
stellt einen vom Benutzer bereitgestellten Puffer bereit oder macht diesen Filebuf unbuffered
(virtuelle geschützte Memberfunktion von std::basic_filebuf<CharT,Traits>) [edit]