Namensräume
Varianten
Aktionen

std::basic_filebuf<CharT,Traits>::underflow

Von cppreference.com
< cpp‎ | io‎ | basic filebuf
 
 
 
 
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>) [bearbeiten]
[virtuell]
gibt das nächste in der Eingabesequenz verfügbare Zeichen zurück
(virtuelle protected Memberfunktion von std::basic_stringbuf<CharT,Traits,Allocator>) [bearbeiten]
[virtuell]
liest ein Zeichen aus der Eingabesequenz, ohne den Zeiger auf das nächste Zeichen vorzuschieben
(virtuelle protected Memberfunktion von std::strstreambuf) [bearbeiten]
[virtuell]
liest aus der zugehörigen Datei und rückt den nächsten Zeiger im Lese-Bereich vor
(virtuelle protected Memberfunktion) [bearbeiten]
[virtuell]
schreibt Zeichen aus dem Schreibbereich in die zugeordnete Datei
(virtual protected member function) [edit]
liest ein Zeichen aus der Eingabesequenz, ohne die Sequenz vorzurücken
(öffentliche Member-Funktion von std::basic_streambuf<CharT,Traits>) [bearbeiten]