std::basic_streambuf<CharT,Traits>::pubsetbuf, std::basic_streambuf<CharT,Traits>::setbuf
Von cppreference.com
< cpp | io | basic streambuf
| public: virtual 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 abgeleitetesten Klasse auf.
2) Die Basisklassenversion dieser Funktion hat keine Auswirkung. Die abgeleiteten Klassen können diese Funktion überschreiben, um die Entfernung oder den Ersatz der kontrollierten Zeichensequenz (des Puffers) durch ein vom Benutzer bereitgestelltes Array oder für jeden anderen implementierungsspezifischen Zweck zu ermöglichen.
Inhalt |
[bearbeiten] Parameter
| s | - | Zeiger auf das erste CharT im vom Benutzer bereitgestellten Puffer |
| n | - | die Anzahl der CharT-Elemente im vom Benutzer bereitgestellten Puffer |
[bearbeiten] Rückgabewert
1) Der Rückgabewert von setbuf(s, n).
2) this
[bearbeiten] Beispiel
Stellt einen 10-KB-Puffer zum Lesen bereit. Unter Linux kann das Hilfsprogramm strace verwendet werden, um die tatsächlich gelesene Byteanzahl zu beobachten.
Führen Sie diesen Code aus
#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
[bearbeiten] 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 158 | C++98 | das Standardverhalten von setbuf war nur spezifiziertwenn gptr() nicht null ist und nicht gleich egptr() ist |
als No-Op spezifiziert für alle Fälle |
[bearbeiten] Siehe auch
| [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>) |
| [virtuell] |
versucht, die gesteuerte Zeichensequenz durch ein Array zu ersetzen (virtuelle geschützte Memberfunktion von std::strstreambuf) |
| setzt den Puffer für einen Dateistream (function) |