basic_filebuf-Klasse

Beschreibt einen Datenstrompuffer, der die Übertragung von Elementen vom Typ Char_T steuert, deren Zeicheneigenschaften durch die Klasse Tr und von einer Abfolge von Elementen bestimmt werden, die in einer externen Datei gespeichert sind.

Syntax

template <class Char_T, class Tr = char_traits<Char_T>>
class basic_filebuf : public basic_streambuf<Char_T, Tr>

Parameter

Char_T
Das grundlegende Element des Dateipuffers.

Tr
Die Merkmale des grundlegenden Elements des Dateipuffers (normalerweise char_traits<Char_T>).

Hinweise

Die Klassenvorlage beschreibt einen Datenstrompuffer, der die Übertragung von Elementen vom Typ Char_T steuert, deren Zeicheneigenschaften durch die Klasse Tr und von einer Abfolge von Elementen bestimmt werden, die in einer externen Datei gespeichert sind.

Hinweis

Objekte des Typs basic_filebuf werden unabhängig vom char_type vom Typparameter Char_T angegebenen Typparameters mit einem internen Puffer vom Typ char* erstellt. Eine Unicode-Zeichenfolge (die wchar_t-Zeichen enthält) wird demnach in eine ANSI-Zeichenfolge (die char-Zeichen enthält) umgewandelt, bevor sie in den internen Puffer geschrieben wird. Um Unicode-Zeichenfolgen im Puffer zu speichern, erstellen Sie einen neuen Puffer vom Typ wchar_t , und legen Sie sie mithilfe der basic_streambuf::pubsetbuf() Methode fest. Ein Beispiel, in dem dieses Verhalten veranschaulicht wird, finden Sie im Folgenden.

Ein Objekt der Klasse basic_filebuf<Char_T, Tr> speichert einen Dateizeiger, der das FILE Objekt bestimmt, das den datenstrom steuert, der einer geöffneten Datei zugeordnet ist. Es speichert zudem Zeiger zu zwei Dateikonvertierungs-Facets für die Verwendung durch die geschützten Memberfunktionen overflow und underflow. Weitere Informationen finden Sie unter basic_filebuf::open.

Beispiel

Im folgenden Beispiel wird gezeigt, wie ein Objekt des Typs basic_filebuf<wchar_t> gezwungen wird, Unicode-Zeichen in seinem internen Puffer durch den Aufruf der pubsetbuf()-Methode zu speichern.

// unicode_basic_filebuf.cpp
// compile with: /EHsc

#include <iostream>
#include <string>
#include <fstream>
#include <iomanip>
#include <memory.h>
#include <string.h>

#define IBUFSIZE 16

using namespace std;

void hexdump(const string& filename);

int main()
{
    wchar_t* wszHello = L"Hello World";
    wchar_t wBuffer[128];

    basic_filebuf<wchar_t> wOutFile;

    // Open a file, wcHello.txt, then write to it, then dump the
    // file's contents in hex
    wOutFile.open("wcHello.txt",
        ios_base::out | ios_base::trunc | ios_base::binary);
    if(!wOutFile.is_open())
    {
        cout << "Error Opening wcHello.txt\n";
        return -1;
    }
    wOutFile.sputn(wszHello, (streamsize)wcslen(wszHello));
    wOutFile.close();
    cout << "Hex Dump of wcHello.txt - note that output is ANSI chars:\n";
    hexdump(string("wcHello.txt"));

    // Open a file, wwHello.txt, then set the internal buffer of
    // the basic_filebuf object to be of type wchar_t, then write
    // to the file and dump the file's contents in hex
    wOutFile.open("wwHello.txt",
        ios_base::out | ios_base::trunc | ios_base::binary);
    if(!wOutFile.is_open())
    {
        cout << "Error Opening wwHello.txt\n";
        return -1;
    }
    wOutFile.pubsetbuf(wBuffer, (streamsize)128);
    wOutFile.sputn(wszHello, (streamsize)wcslen(wszHello));
    wOutFile.close();
    cout << "\nHex Dump of wwHello.txt - note that output is wchar_t chars:\n";
    hexdump(string("wwHello.txt"));

    return 0;
}

// dump contents of filename to stdout in hex
void hexdump(const string& filename)
{
    fstream ifile(filename.c_str(),
        ios_base::in | ios_base::binary);
    char *ibuff = new char[IBUFSIZE];
    char *obuff = new char[(IBUFSIZE*2)+1];
    int i;

    if(!ifile.is_open())
    {
        cout << "Cannot Open " << filename.c_str()
             << " for reading\n";
        return;
    }
    if(!ibuff || !obuff)
    {
        cout << "Cannot Allocate buffers\n";
        ifile.close();
        return;
    }

    while(!ifile.eof())
    {
        memset(obuff,0,(IBUFSIZE*2)+1);
        memset(ibuff,0,IBUFSIZE);
        ifile.read(ibuff,IBUFSIZE);

        // corner case where file is exactly a multiple of
        // 16 bytes in length
        if(ibuff[0] == 0 && ifile.eof())
            break;

        for(i = 0; i < IBUFSIZE; i++)
        {
            if(ibuff[i] >= ' ')
                obuff[i] = ibuff[i];
            else
                obuff[i] = '.';

            cout << setfill('0') << setw(2) << hex
                 << (int)ibuff[i] << ' ';
        }
        cout << "  " << obuff << endl;
    }
    ifile.close();
}
Hex Dump of wcHello.txt - note that output is ANSI chars:
48 65 6c 6c 6f 20 57 6f 72 6c 64 00 00 00 00 00   Hello World.....

Hex Dump of wwHello.txt - note that output is wchar_t chars:
48 00 65 00 6c 00 6c 00 6f 00 20 00 57 00 6f 00   H.e.l.l.o. .W.o.
72 00 6c 00 64 00 00 00 00 00 00 00 00 00 00 00   r.l.d...........

Konstruktoren

Konstruktor BESCHREIBUNG
basic_filebuf Konstruiert ein Objekt vom Typ basic_filebuf.

TypeDefs

Typname Beschreibung
char_type Verknüpft einen Typnamen mit dem Char_T-Vorlagenparameter.
int_type Stellt den Typ im Bereich von basic_filebuf dem Typ desselben Namens im Bereich Tr gleich.
off_type Stellt den Typ im Bereich von basic_filebuf dem Typ desselben Namens im Bereich Tr gleich.
pos_type Stellt den Typ im Bereich von basic_filebuf dem Typ desselben Namens im Bereich Tr gleich.
traits_type Verknüpft einen Typnamen mit dem Tr-Vorlagenparameter.

Memberfunktionen

Memberfunktion BESCHREIBUNG
close Schließt eine Datei.
is_open Gibt an, ob eine Datei geöffnet ist.
open Öffnet eine Datei.
Überlauf Eine geschützte virtuelle Funktion, die aufgerufen werden kann, wenn ein neues Zeichen in einen vollen Puffer eingefügt wird.
pbackfail Die geschützte virtuelle Memberfunktion versucht, ein Element zurück in den Eingabestream zu versetzen und es dann zum aktuellen Element zu ernennen (wird mit dem nächsten Zeiger darauf gezeigt).
seekoff Die geschützte virtuelle Memberfunktion versucht, die aktuellen Positionen für die gesteuerten Streams zu ändern.
seekpos Die geschützte virtuelle Memberfunktion versucht, die aktuellen Positionen für die gesteuerten Streams zu ändern.
setbuf Die geschützte virtuelle Memberfunktion führt einen für jeden abgeleiteten Streampuffer bestimmten Vorgang aus.
Swap Tauscht den basic_filebuf-Inhalt mit dem Inhalt des angegebenen basic_filebuf-Parameters.
sync Die geschützte virtuelle Funktion versucht, die gesteuerten Streams mit zugehörigen externen Streams zu synchronisieren.
uflow Die geschützte virtuelle Funktion versucht, das aktuelle Element aus dem Eingabestream zu extrahieren.
Unterlauf Die geschützte virtuelle Funktion versucht, das aktuelle Element aus dem Eingabestream zu extrahieren.

Anforderungen

Header:< Fstream>

Namespace: std

basic_filebuf::basic_filebuf

Konstruiert ein Objekt vom Typ basic_filebuf.

basic_filebuf();

basic_filebuf(basic_filebuf&& right);

Hinweise

Der erste Konstruktor speichert einen NULL-Zeiger in allen Zeigern, die den Eingabe- und Ausgabepuffer steuern. Außerdem wird ein NULL-Zeiger im Dateizeiger gespeichert.

Der zweite Konstruktor initialisiert das Objekt mit dem Inhalt von right, das als rvalue-Verweis behandelt wird.

basic_filebuf::char_type

Verknüpft einen Typnamen mit dem Char_T-Vorlagenparameter.

typedef Char_T char_type;

basic_filebuf::close

Schließt eine Datei.

basic_filebuf<Char_T, Tr> *close();

Rückgabewert

Die Memberfunktion gibt einen NULL-Zeiger zurück, wenn der Dateizeiger ein NULL-Zeiger ist.

Hinweise

close ruft fclose(fp) auf. Wenn diese Funktion einen Wert zurückgibt, der ungleich Null ist, gibt die Funktion einen NULL-Zeiger zurück. Andernfalls wird angegeben this , dass die Datei erfolgreich geschlossen wurde.

Für einen breiten Datenstrom, wenn seit dem Öffnen des Datenstroms oder seit dem letzten Aufruf streamposeine Einfügemarke aufgetreten ist, ruft die Funktion auf overflow. Außerdem wird jede Sequenz eingefügt, die zum Wiederherstellen des anfänglichen Konvertierungszustands erforderlich ist, indem das Dateikonvertierungs-Facet fac verwendet wird, um nach Bedarf aufgerufen werden zu können fac.unshift . Jedes erstellte Element byte des Typs char wird in den zugeordneten Datenstrom geschrieben, der vom Dateizeiger fp als durch aufeinander folgende Aufrufe des Formulars fputc(byte, fp)bezeichnet wird. Wenn der Aufruf oder fac.unshift ein Schreibvorgang fehlschlägt, ist die Funktion nicht erfolgreich.

Beispiel

Im folgenden Beispiel wird davon ausgegangen, dass zwei Dateien im aktuellen Verzeichnis vorhanden sind: basic_filebuf_close.txt (Inhalt ist "Test") und iotest.txt (Inhalt ist "ssss").

// basic_filebuf_close.cpp
// compile with: /EHsc
#include <fstream>
#include <iostream>

int main() {
   using namespace std;
   ifstream file;
   basic_ifstream <wchar_t> wfile;
   char c;
   // Open and close with a basic_filebuf
   file.rdbuf()->open( "basic_filebuf_close.txt", ios::in );
   file >> c;
   cout << c << endl;
   file.rdbuf( )->close( );

   // Open/close directly
   file.open( "iotest.txt" );
   file >> c;
   cout << c << endl;
   file.close( );

   // open a file with a wide character name
   wfile.open( L"iotest.txt" );

   // Open and close a nonexistent with a basic_filebuf
   file.rdbuf()->open( "ziotest.txt", ios::in );
   cout << file.fail() << endl;
   file.rdbuf( )->close( );

   // Open/close directly
   file.open( "ziotest.txt" );
   cout << file.fail() << endl;
   file.close( );
}
t
s
0
1

basic_filebuf::int_type

Gibt diesen Typ innerhalb basic_filebuf des Bereichs an, der dem Typ desselben Namens im Tr Bereich entspricht.

typedef typename traits_type::int_type int_type;

basic_filebuf::is_open

Gibt an, ob eine Datei geöffnet ist.

bool is_open() const;

Rückgabewert

true wenn der Dateizeiger nicht null ist.

Beispiel

// basic_filebuf_is_open.cpp
// compile with: /EHsc
#include <fstream>
#include <iostream>

int main( )
{
   using namespace std;
   ifstream file;
   cout << boolalpha << file.rdbuf( )->is_open( ) << endl;

   file.open( "basic_filebuf_is_open.cpp" );
   cout << file.rdbuf( )->is_open( ) << endl;
}
false
true

basic_filebuf::off_type

Macht diesen Typ innerhalb basic_filebuf des Bereichs entsprechend dem Typ desselben Namens im Tr Bereich.

typedef typename traits_type::off_type off_type;

basic_filebuf::open

Öffnet eine Datei.

basic_filebuf<Char_T, Tr> *open(
    const char* filename,
    ios_base::openmode mode,
    int protection = (int)ios_base::_Openprot);

basic_filebuf<Char_T, Tr> *open(
    const char* filename,
    ios_base::openmode mode);

basic_filebuf<Char_T, Tr> *open(
    const wchar_t* filename,
    ios_base::openmode mode,
    int protection = (int)ios_base::_Openprot);

basic_filebuf<Char_T, Tr> *open(
    const wchar_t* filename,
    ios_base::openmode mode);

Parameter

filename
Der Name der zu öffnenden Datei.

mode
Eine der Aufzählungen in ios_base::openmode.

Schutz
Der Standardmäßige Dateiöffnungsschutz, der dem Shflag-Parameter in _fsopen entspricht, _wfsopen.

Rückgabewert

Wenn der Puffer bereits geöffnet ist oder wenn der Dateizeiger ein Nullzeiger ist, gibt die Funktion einen Nullzeiger zurück. Andernfalls wird thiszurückgegeben.

Hinweise

Diese Funktion verwendet eine FILE * zurück, basic_filebuf wie sie aufgerufen fopen/wfopen(filename, strmode)haben. strmodewird von mode & ~()ate|binary:

  • ios_base::in wird "r" (vorhandene Datei zum Lesen öffnen).
  • ios_base::out oder wird "w" (vorhandene Datei abgeschnitten oder ios_base::out | ios_base::trunc zum Schreiben erstellt).
  • ios_base::out | app wird "a" (vorhandene Datei öffnen, um alle Schreibvorgänge anzufügen).
  • ios_base::in | ios_base::out wird "r+" (vorhandene Datei zum Lesen und Schreiben öffnen).
  • ios_base::in | ios_base::out | ios_base::trunc wird "w+" (vorhandene Datei abgeschnitten oder für Lese- und Schreibzugriff erstellt).
  • ios_base::in | ios_base::out | ios_base::app wird "a+" (öffnen Sie vorhandene Datei zum Lesen und Anfügen aller Schreibvorgänge).

Wenn mode & ios_base::binary nicht zero ist, fügt bstrmode die Funktion an, um einen Binärstrom anstelle eines Textstroms zu öffnen. Wenn mode & ios_base::ate nicht zero ist und die Datei erfolgreich geöffnet wurde, wird der aktuelle Speicherort im Datenstrom am Ende der Datei positioniert. Wenn das fehlschlägt, wird die Datei geschlossen.

Wenn die obigen Vorgänge erfolgreich abgeschlossen wurden, wird das Dateikonvertierungs-Facet bestimmt: use_facet<codecvt<Char_T, char, traits_type::getloc> >()state_type, für die Verwendung durch Unterlauf und Überlauf.

Wenn die Datei nicht erfolgreich geöffnet werden konnte, nullptr wird zurückgegeben.

Beispiel

Weitere Informationen finden Sie in basic_filebuf::close einem Beispiel, das verwendet openwird.

basic_filebuf::operator=

Weist den Inhalt dieses Streampufferobjekts zu. Dies ist eine Verschiebungszuweisung mit einem Rvalue, der keine Kopie hinterlässt.

basic_filebuf& operator=(basic_filebuf&& right);

Parameter

right
Ein rvalue-Verweis auf ein basic_filebuf-Objekt.

Rückgabewert

Gibt *this zurück.

Hinweise

Der Member-Operator ersetzt den Inhalt des Objekts mithilfe des Inhalts von right, als Rvalue-Verweis behandelt. Weitere Informationen finden Sie unter Rvalue-Referenzdeklaration: &&.

basic_filebuf::overflow

Wird aufgerufen, wenn ein neues Zeichen in einen vollen Puffer eingefügt wird.

virtual int_type overflow(int_type _Meta = traits_type::eof);

Parameter

_Meta
Das Zeichen, das in den Puffer oder in den Puffer eingefügt traits_type::eofwerden soll.

Rückgabewert

Wenn die Funktion nicht erfolgreich ist, wird sie zurückgegeben traits_type::eof. Andernfalls wird es zurückgegeben traits_type::not_eof(_Meta).

Hinweise

Wenn _Meta != traits_type::eofdie geschützte virtuelle Memberfunktion versucht, das Element(_Meta)ch = traits_type::to_char_typein den Ausgabepuffer einzufügen. Hierfür gibt es verschiedene Möglichkeiten:

  • Wenn eine Schreibposition verfügbar ist, kann das Element in der Schreibposition gespeichert werden, und der nächste Zeiger für den Ausgabepuffer kann inkrementiert werden.

  • Eine Schreibposition kann verfügbar gemacht werden, indem neuer oder zusätzlicher Speicher für den Ausgabepuffer zugewiesen wird.

  • Es kann jede ausstehende Ausgabe im Ausgabepuffer konvertieren, gefolgt von ch, indem Sie das Dateikonvertierungs-Facet fac verwenden, um nach Bedarf aufrufen zu können fac.out . Jedes erstellte Element ch des Typs char wird in den zugeordneten Datenstrom geschrieben, der vom Dateizeiger fp als durch nachfolgende Aufrufe des Formulars fputc(ch, fp)bezeichnet wird. Wenn eine Konvertierung oder ein Schreibvorgang fehlschlägt, ist die Funktion nicht erfolgreich.

basic_filebuf::pbackfail

Versucht, ein Element zurück in den Eingabestream zu versetzen und es dann zum aktuellen Element zu ernennen (wird mit dem nächsten Zeiger darauf gezeigt).

virtual int_type pbackfail(int_type _Meta = traits_type::eof);

Parameter

_Meta
Das Zeichen, das in den Puffer eingefügt werden soll, oder traits_type::eof.

Rückgabewert

Wenn die Funktion nicht erfolgreich ist, wird sie zurückgegeben traits_type::eof. Andernfalls wird es zurückgegeben traits_type::not_eof(_Meta).

Hinweise

Die geschützte virtuelle Memberfunktion versetzt ein Element zurück in den Eingabepuffer und ernennt es dann zum aktuellen Element (wird mit dem nächsten Zeiger darauf gezeigt). Wenn _Meta == traits_type::eofdas Element, das zurückgesetzt werden soll, effektiv das Element im Stream vor dem aktuellen Element ist. Andernfalls wird dieses Element durch ch = traits_type::to_char_type(_Meta). Ein Element kann auf verschiedene Arten durch die Funktion wiederhergestellt werden:

  • Wenn eine putback Position verfügbar ist, und das element ch, das dort gespeichert ist, gleich ist, kann er den nächsten Zeiger für den Eingabepuffer dekrementieren.

  • Wenn die Funktion eine putback Position zur Verfügung stellen kann, kann sie dies tun, legen Sie den nächsten Zeiger auf diese Position fest, und speichern ch Sie ihn in dieser Position.

  • Wenn die Funktion einen Pushback eines Elements in den Eingabestream durchführen kann, kann dies z.B. durch Aufruf von ungetc für ein Element des Typs char geschehen.

basic_filebuf::pos_type

Macht diesen Typ innerhalb basic_filebuf des Bereichs entsprechend dem Typ desselben Namens im Tr Bereich.

typedef typename traits_type::pos_type pos_type;

basic_filebuf::seekoff

Versucht, die aktuellen Positionen für die gesteuerten Streams zu ändern.

virtual pos_type seekoff(
    off_type _Off,
    ios_base::seekdir _Way,
    ios_base::openmode _Which = ios_base::in | ios_base::out);

Parameter

_Off
Die Position, die im Verhältnis zu _Way gesucht werden soll.

_Way
Der Startpunkt für Offsetvorgänge. Mögliche Werte sind unter seekdir aufgeführt.

_Which
Gibt den Modus für die Zeigerposition an. Standardmäßig können Lese- und Schreibpositionen geändert werden.

Rückgabewert

Gibt die neue Position oder eine ungültige Streamposition zurück.

Hinweise

Die geschützte virtuelle Memberfunktion versucht, die aktuellen Positionen für die kontrollierten Datenströme zu ändern. Für ein Objekt der Klasse basic_filebuf<Char_T, Tr>kann eine Streamposition durch ein Objekt des Typs fpos_tdargestellt werden, das einen Offset und alle Zustandsinformationen speichert, die zum Analysieren eines breiten Datenstroms erforderlich sind. Offset Null bezieht sich auf das erste Element des Datenstroms. (Ein Objekt vom Typ pos_type speichert mindestens ein fpos_t-Objekt.)

Bei einer Datei, die sowohl zum Lesen als auch zum Schreiben geöffnet wird, werden sowohl die Eingabe- als auch Ausgabestreams zusammen positioniert. Um zwischen einfügen und extrahieren zu wechseln, müssen Sie entweder pubseekoff oder pubseekpos. Aufrufe zu pubseekoff (und daher seekoff) verfügen über verschiedene Einschränkungen für Textströme, binäre Datenströme und breite Datenströme.

Wenn der Dateizeiger ein Nullzeiger fp ist, schlägt die Funktion fehl. Andernfalls versucht es, die Streamposition durch Aufrufen fseek(fp, _Off, _Way)zu ändern. Wenn diese Funktion erfolgreich ist und die resultierende Position fposn durch Aufrufen fgetpos(fp, &fposn)bestimmt werden kann, ist die Funktion erfolgreich. Wenn die Funktion erfolgreich ist, gibt sie einen Wert des Typs pos_type zurück, der enthält fposn. Andernfalls gibt sie eine ungültige Streamposition zurück.

basic_filebuf::seekpos

Versucht, die aktuellen Positionen für die gesteuerten Streams zu ändern.

virtual pos_type seekpos(
    pos_type _Sp,
    ios_base::openmode _Which = ios_base::in | ios_base::out);

Parameter

_Sp
Die Position, nach der gesucht werden soll.

_Which
Gibt den Modus für die Zeigerposition an. Standardmäßig können Lese- und Schreibpositionen geändert werden.

Rückgabewert

Wenn der Dateizeiger ein Nullzeiger fp ist, schlägt die Funktion fehl. Andernfalls versucht es, die Datenstromposition durch Aufrufen fsetpos(fp, &fposn)zu ändern, wo fposn das fpos_t Objekt gespeichert posist. Wenn diese Funktion erfolgreich ausgeführt wurde, gibt die Funktion pos zurück. Andernfalls gibt sie eine ungültige Streamposition zurück. Vergleichen Sie den Rückgabewert mit pos_type(off_type(-1)), um festzustellen, ob die Streamposition ungültig ist.

Hinweise

Die geschützte virtuelle Memberfunktion versucht, die aktuellen Positionen für die kontrollierten Datenströme zu ändern. Für ein Objekt der Klasse basic_filebuf<Char_T, Tr>kann eine Streamposition durch ein Objekt des Typs fpos_tdargestellt werden, das einen Offset und alle Zustandsinformationen speichert, die zum Analysieren eines breiten Datenstroms erforderlich sind. Offset Null bezieht sich auf das erste Element des Datenstroms. (Ein Objekt vom Typ pos_type speichert mindestens ein fpos_t-Objekt.)

Bei einer Datei, die sowohl zum Lesen als auch zum Schreiben geöffnet wird, werden sowohl die Eingabe- als auch Ausgabestreams zusammen positioniert. Um zwischen einfügen und extrahieren zu wechseln, müssen Sie entweder pubseekoff oder pubseekpos. Aufrufe zu pubseekoff (und zu seekoff) verfügen über verschiedene Einschränkungen für Textströme, binäre Datenströme und breite Datenströme.

Für einen breiten Stream, wenn alle Einfügeungen seit dem Öffnen des Datenstroms aufgetreten sind, oder seit dem letzten Aufruf der streamposFunktion wird die Funktion aufgerufen overflow. Außerdem wird jede Sequenz eingefügt, die zum Wiederherstellen des anfänglichen Konvertierungszustands erforderlich ist, indem sie das Dateikonvertierungs-Facet fac zum Aufrufen fac.unshift nach Bedarf verwenden. Jedes erstellte Element byte des Typs char wird in den zugeordneten Datenstrom geschrieben, der vom Dateizeiger fp als durch aufeinander folgende Aufrufe des Formulars fputc(byte, fp)festgelegt ist. Wenn der Aufruf oder fac.unshift ein Schreibvorgang fehlschlägt, ist die Funktion nicht erfolgreich.

basic_filebuf::setbuf

Führt einen für jeden abgeleiteten Streampuffer bestimmten Vorgang aus.

virtual basic_streambuf<Char_T, Tr> *setbuf(
    char_type* _Buffer,
    streamsize count);

Parameter

_Buffer
Ein Zeiger auf einen Puffer.

count
Größe des Puffers.

Rückgabewert

Die geschützte Memberfunktion gibt Null zurück, wenn der Dateizeiger fp ein NULL-Zeiger ist.

Hinweise

setbuf ruft setvbuf( fp, (char*) _Buffer, _IOFBF, count * sizeof( Char_T)) auf, um das Array von count Elementen anzubieten, die mit _Buffer als Puffer für den Datenstrom beginnen. Wenn diese Funktion einen Wert zurückgibt, der ungleich Null ist, gibt die Funktion einen NULL-Zeiger zurück. Andernfalls gibt this es zurück zum Signalerfolg.

basic_filebuf::swap

Tauscht den Inhalt dieses basic_filebuf-Objekts gegen den Inhalt des bereitgestellten basic_filebuf-Objekts aus.

void swap(basic_filebuf& right);

Parameter

right
Ein lvalue-Verweis auf eine andere basic_filebuf.

basic_filebuf::sync

Versucht, die gesteuerten Streams mit zugehörigen externen Streams zu synchronisieren.

virtual int sync();

Rückgabewert

Gibt null zurück, wenn der Dateizeiger ein Nullzeiger fp ist. Andernfalls gibt es null zurück, wenn Aufrufe sowohlfflush(fp) überlauf als auch erfolgreich beim Spülen aller ausstehenden Ausgabe im Datenstrom ausgeführt werden.

basic_filebuf::traits_type

Verknüpft einen Typnamen mit dem Tr-Vorlagenparameter.

typedef Tr traits_type;

basic_filebuf::underflow

Extrahiert das aktuelle Element aus dem Eingabestream.

virtual int_type underflow();

Rückgabewert

Wenn die Funktion nicht erfolgreich ist, wird sie zurückgegeben traits_type::eof. Andernfalls wird chsie zurückgegeben, wie im Abschnitt "Hinweise" beschrieben.

Hinweise

Die geschützte virtuelle Memberfunktion versucht, das aktuelle Element ch aus dem Eingabedatenstrom zu extrahieren und das Element als traits_type::to_int_type(ch)zurückzugeben. Hierfür gibt es verschiedene Möglichkeiten:

  • Wenn eine Leseposition verfügbar ist, dauert ch es als element, das in der Leseposition gespeichert ist und den nächsten Zeiger für den Eingabepuffer voranschreitet.

  • Es kann ein oder mehrere Elemente des Typs lesen, wie durch aufeinander folgende Aufrufe des Formularsfgetc(fp), und konvertieren Sie sie in ein Element ch des TypscharChar_T, indem Sie das Dateikonvertierungs-Facet fac verwenden, um nach Bedarf aufrufen zu könnenfac.in. Wenn ein Lese- oder Konvertierungsvorgang fehlschlägt, ist die Funktion nicht erfolgreich.

Siehe auch

<Fstream>
Threadsicherheit in der C++-Standardbibliothek
iostream-Programmierung
iostreams-Konventionen