std::basic_streambuf<CharT,Traits>:: pubsetbuf, std::basic_streambuf<CharT,Traits>:: setbuf
From cppreference.net
<
cpp
|
io
|
basic streambuf
|
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.
Diesen Code ausführen
#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) |