Freigeben über


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 Eigenschaften des grundlegenden Elements des Dateipuffers (in der Regel 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 vom Typ basic_filebuf werden unabhängig vom char_type angegebenen Typparameter Char_T 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 Typpuffer wchar_t , und legen Sie ihn 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 angibt, 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.
overflow 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.
underflow 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 zurückgegeben this , dass die Datei erfolgreich geschlossen wurde.

Bei einem breiten Datenstrom, wenn seit dem Öffnen des Datenstroms oder seit dem letzten Aufruf streamposder Funktion overflowEinfügungen aufgetreten sind. Außerdem wird jede Sequenz eingefügt, die zum Wiederherstellen des anfänglichen Konvertierungszustands erforderlich ist, indem das Facet fac für die Dateikonvertierung verwendet wird, um nach Bedarf aufzurufen fac.unshift . Jedes erzeugte 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 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 "Testen") 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

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

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 gleichbedeutend mit 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 Enumerationen 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 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 als hätten Sie aufgerufen fopen/wfopen(filename, strmode). strmodewird bestimmt von mode & ~(ate binary|):

  • ios_base::in wird "r" (vorhandene Datei zum Lesen öffnen).
  • ios_base::out oder ios_base::out | ios_base::trunc wird "w" (vorhandene Datei abschneiden oder zum Schreiben erstellen).
  • ios_base::out | app wird "a" (vorhandene Datei zum Anfügen aller Schreibvorgänge öffnen).
  • 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 abschneiden oder zum Lesen und Schreiben erstellen).
  • ios_base::in | ios_base::out | ios_base::app wird "a+" (öffnen Sie vorhandene Datei zum Lesen und zum Anfügen aller Schreibvorgänge).

Ist mode & ios_base::binary "nonzero" angegeben, wird die Funktion angefügt, um einen binären Datenstrom anstelle eines Textstreams b strmode zu öffnen. Wenn mode & ios_base::ate die Datei nicht null ist und die Datei erfolgreich geöffnet wurde, wird der aktuelle Speicherort im Datenstrom am Ende der Datei positioniert. Wenn dies fehlschlägt, wird die Datei geschlossen.

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

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

Beispiel

Ein Beispiel, das verwendet wird, openfinden Sie unter basic_filebuf::close .

basic_filebuf::operator=

Weist den Inhalt dieses Streampufferobjekts zu. Dies ist eine Verschiebungszuweisung mit einem Wert, 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-Verweisdeklarator: &&.

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 eingefügt werden soll.traits_type::eof

Rückgabewert

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

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, gefolgt von ch, konvertieren, indem sie das Dateikonvertierungs-Facet fac verwenden, um nach Bedarf aufzurufen fac.out . Jedes erzeugte Element ch vom Typ char wird in den zugeordneten Datenstrom geschrieben, der vom Dateizeiger fp festgelegt wird, als ob durch aufeinander folgende Aufrufe des Formulars fputc(ch, fp). Wenn konvertierungs- oder schreibvorgänge fehlschlagen, ist die Funktion nicht erfolgreich.

basic_filebuf::p backfail

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 sein kann, wird sie zurückgegeben traits_type::eof. Andernfalls wird traits_type::not_eof(_Meta)zurückgegeben.

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ückgeschoben werden soll, effektiv das Element, das sich bereits im Datenstrom befindet, 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 dort gespeicherte Element gleich chgleich ist, kann er den nächsten Zeiger für den Eingabepuffer erhöhen.

  • Wenn die Funktion eine putback Position verfügbar machen kann, können Sie dies tun, legen Sie den nächsten Zeiger auf diese Position fest, und speichern Sie ch ihn an dieser Position.

  • Wenn die Funktion ein Element auf den Eingabedatenstrom zurückdrücken kann, kann dies möglich sein, z. B. durch Aufrufen ungetc eines Elements vom Typ char.

basic_filebuf::p os_type

Macht diesen Typ innerhalb basic_filebuf des Bereichs gleichbedeutend mit 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

_Aus
Die Position, die relativ zu _Way gesucht werden soll.

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

_Welche
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. Bei einem Objekt der Klasse basic_filebuf<Char_T, Tr>kann eine Datenstromposition durch ein Objekt vom Typ fpos_tdargestellt werden, das einen Offset und alle Zustandsinformationen speichert, die zum Analysieren eines breiten Datenstroms erforderlich sind. Offset 0 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 von pubseekoff (und somit von seekoff) haben verschiedene Einschränkungen für Textstreams, binäre Streams und breite Streams.

Wenn der Dateizeiger fp ein NULL-Zeiger ist, schlägt die Funktion fehl. Andernfalls wird versucht, die Datenstromposition 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, wird ein Wert vom Typ pos_type zurückgegeben, 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.

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

Rückgabewert

Wenn der Dateizeiger fp ein NULL-Zeiger ist, schlägt die Funktion fehl. Andernfalls wird versucht, die Datenstromposition durch Aufrufen fsetpos(fp, &fposn)des Objekts zu ändern, in dem 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. Bei einem Objekt der Klasse basic_filebuf<Char_T, Tr>kann eine Datenstromposition durch ein Objekt vom Typ fpos_tdargestellt werden, das einen Offset und alle Zustandsinformationen speichert, die zum Analysieren eines breiten Datenstroms erforderlich sind. Offset 0 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 an pubseekoff (und an seekoff) weisen verschiedene Einschränkungen für Textdatenströme, binäre Datenströme und breite Datenströme auf.

Bei einem breiten Datenstrom, wenn seit dem Öffnen des Datenstroms oder seit dem letzten Aufruf streamposder Funktion overflowEinfügungen aufgetreten sind. Außerdem wird jede Sequenz eingefügt, die zum Wiederherstellen des anfänglichen Konvertierungszustands erforderlich ist, indem das Facet fac für die Dateikonvertierung verwendet wird, um nach Bedarf aufzurufen fac.unshift . Jedes erzeugte 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 wird. 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

_Puffer
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 Aufrufe setvbuf( fp, (char*) _Buffer, _IOFBF, count * sizeof( Char_T)) , um das Array von count Elementen anzubieten, die bei _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 wird der Signalerfolg zurückgegeben this .

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 ein anderes 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 fp ein Nullzeiger ist. Andernfalls wird null nur zurückgegeben, wenn Aufrufe an überlauf und fflush(fp) erfolgreich alle ausstehenden Ausgaben im Datenstrom geleert 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 sein kann, wird sie zurückgegeben traits_type::eof. Andernfalls wird chdie Konvertierung wie im Abschnitt "Hinweise" beschrieben zurückgegeben.

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). Hierfür gibt es verschiedene Möglichkeiten:

  • Wenn eine Leseposition verfügbar ist, wird es als in der Leseposition gespeichertes Element verwendet ch und der nächste Zeiger für den Eingabepuffer vorangestellt.

  • Es kann ein oder mehrere Elemente des Typs charlesen, wie durch aufeinander folgende Aufrufe des Formulars fgetc(fp)und konvertieren Sie sie in ein Element ch vom Typ Char_T , indem sie das Dateikonvertierungsfacet fac verwenden, um nach Bedarf aufzurufen fac.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