Namespaces
Variants

std::basic_streambuf<CharT,Traits>:: pubsetbuf, std::basic_streambuf<CharT,Traits>:: setbuf

From cppreference.net
public :
basic_streambuf < CharT, Traits > * pubsetbuf ( char_type * s, std:: streamsize n )
(1)
protected :
virtual basic_streambuf < CharT, Traits > * setbuf ( char_type * s, std:: streamsize n )
(2)
1) Ruft setbuf ( s, n ) der am stärksten abgeleiteten Klasse auf.
2) Die Basisklassenversion dieser Funktion hat keine Auswirkung. Die abgeleiteten Klassen können diese Funktion überschreiben, um das Entfernen oder Ersetzen der gesteuerten Zeichenfolge (des Puffers) durch ein benutzerbereitgestelltes Array oder für andere implementierungsspezifische Zwecke zu ermöglichen.

Inhaltsverzeichnis

Parameter

s - Zeiger auf das erste CharT im benutzerbereitgestellten Puffer
n - die Anzahl der CharT Elemente im benutzerbereitgestellten Puffer

Rückgabewert

1) Der Rückgabewert von setbuf ( s, n ) .
2) this

Beispiel

Stellt einen 10k-Puffer für Lesevorgänge bereit. Unter Linux kann das strace-Utility verwendet werden, um die tatsächlich gelesene Byteanzahl zu beobachten.

#include <fstream>
#include <iostream>
#include <string>
int main()
{
    int cnt = 0;
    std::ifstream file;
    char buf[1024 * 10 + 1];
    file.rdbuf()->pubsetbuf(buf, sizeof buf);
    file.open("/usr/share/dict/words");
    for (std::string line; getline(file, line);)
        ++cnt;
    std::cout << cnt << '\n';
}

Mögliche Ausgabe:

356010

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 158 C++98 das Standardverhalten von setbuf war nur spezifiziert
wenn gptr() nicht null und nicht gleich egptr() ist
als No-Op spezifiziert
für alle Fälle

Siehe auch

[virtual]
versucht, die gesteuerte Zeichenfolge durch ein Array zu ersetzen
(virtuelle geschützte Memberfunktion von std::basic_stringbuf<CharT,Traits,Allocator> )
[virtual]
stellt einen benutzerdefinierten Puffer bereit oder deaktiviert die Pufferung für diesen filebuf
(virtuelle geschützte Memberfunktion von std::basic_filebuf<CharT,Traits> )
[virtual]
versucht, die gesteuerte Zeichenfolge durch ein Array zu ersetzen
(virtuelle geschützte Memberfunktion von std::strstreambuf )
setzt den Puffer für einen Dateistrom
(Funktion)