std::basic_filebuf<CharT,Traits>::underflow
| protected: virtual int_type underflow() |
||
Liest weitere Daten in den Eingabebereich ein.
Verhält sich wie die Basisklasse std::basic_streambuf::underflow, mit der Ausnahme, dass zum Lesen der Daten aus der zugehörigen Zeichensequenz (der Datei) in den Lese-Bereich zuerst die Bytes aus der Datei in einen temporären Puffer gelesen werden (der so groß wie nötig zugewiesen wird), und dann std::codecvt::in der implantierten Locale verwendet wird, um die externe (typischerweise Multibyte-)Darstellung in die interne Form zu konvertieren, die dann zur Befüllung des Lese-Bereichs verwendet wird. Die Konvertierung kann übersprungen werden, wenn std::codecvt::always_noconv der Locale true zurückgibt.
Inhalt |
[bearbeiten] Parameter
(keine)
[bearbeiten] Rückgabewert
Traits::to_int_type(*gptr()) (das erste Zeichen der wartenden Sequenz) im Erfolgsfall oder Traits::eof() im Fehlerfall.
[bearbeiten] Beispiel
#include <fstream> #include <iostream> struct mybuf : std::filebuf { int underflow() { std::cout << "Before underflow(): size of the get area is " << egptr()-eback() << " with " << egptr()-gptr() << " read positions available\n"; int rc = std::filebuf::underflow(); std::cout << "underflow() returns " << rc << ".\nAfter the call, " << "size of the get area is " << egptr()-eback() << " with " << egptr()-gptr() << " read positions available\n"; return rc; } }; int main() { mybuf buf; buf.open("test.txt", std::ios_base::in); std::istream stream(&buf); while (stream.get()) ; }
Mögliche Ausgabe
Before underflow(): size of the get area is 0 with 0 read positions available underflow() returns 73. After the call, size of the get area is 110 with 110 read positions available Before underflow(): size of the get area is 110 with 0 read positions available underflow() returns -1. After the call, size of the get area is 0 with 0 read positions available
[bearbeiten] Siehe auch
| [virtuell] |
liest Zeichen aus der zugeordneten Eingabesequenz in den Get-Bereich (virtuelle geschützte Member-Funktion von std::basic_streambuf<CharT,Traits>) |
| [virtuell] |
gibt das nächste in der Eingabesequenz verfügbare Zeichen zurück (virtuelle protected Memberfunktion von std::basic_stringbuf<CharT,Traits,Allocator>) |
| [virtuell] |
liest ein Zeichen aus der Eingabesequenz, ohne den Zeiger auf das nächste Zeichen vorzuschieben (virtuelle protected Memberfunktion von std::strstreambuf) |
| [virtuell] |
liest aus der zugehörigen Datei und rückt den nächsten Zeiger im Lese-Bereich vor (virtuelle protected Memberfunktion) |
| [virtuell] |
schreibt Zeichen aus dem Schreibbereich in die zugeordnete Datei (virtual protected member function) |
| liest ein Zeichen aus der Eingabesequenz, ohne die Sequenz vorzurücken (öffentliche Member-Funktion von std::basic_streambuf<CharT,Traits>) |