basic_filebuf Class

Beschreibt einen Streampuffer, der die Übertragung von Elementen des Typs steuert Elem, deren Eigenschaften hängen von der Klasse Tr, nach und aus einer Sequenz von Elementen in einer externen Datei gespeichert.

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

Parameter

  • Elem
    Das Grundelement des Dateipuffers.

  • Tr
    Die Merkmale der das Grundelement des Dateipuffers (in der Regel char_traits<Elem>).

Hinweise

Die Vorlage-Klasse beschreibt einen Streampuffer, der die Übertragung von Elementen des Typs steuert Elem, deren Eigenschaften hängen von der Klasse Tr, nach und aus einer Sequenz von Elementen in einer externen Datei gespeichert.

HinweisHinweis

Objekte vom Typ basic_filebuf mit einem internen Puffer des Typs erstellt werden char * unabhängig von der char_type von der Type-Parameter angegebenen Elem.Dies bedeutet, dass eine Unicode-Zeichenfolge (mit wchar_t Zeichen) wird in eine ANSI-Zeichenfolge konvertiert werden (mit char Zeichen) bevor sie auf den internen Puffer geschrieben werden.Um Unicode-Zeichenfolgen in den Puffer zu speichern, erstellen einen neuen Puffer vom Typ wchar_t , und legen Sie es mit der basic_streambuf::pubsetbuf() Methode.Ein Beispiel, das dieses Verhalten veranschaulicht, finden Sie unter unten.

An object of class basic_filebuf<Elem, Tr> Speichert einen File-Zeiger, bestimmt die FILE -Objekt, das die Streams mit einer geöffneten Datei steuert.Es speichert auch Verweise auf zwei Facetten der Datei-Konvertierung für die Verwendung von geschützten Member-Funktionen Überlauf und Unterlauf.Weitere Informationen finden Sie unter basic_filebuf::open.

Beispiel

Im folgende Beispiel wird veranschaulicht, wie ein Objekt vom Typ erzwingen basic_filebuf<wchar_t> zum Speichern von Unicode-Zeichen in ihren internen Puffer durch Aufruf der pubsetbuf() Methode.

// 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();
}
  
  
  
  

tzf8k3z8.collapse_all(de-de,VS.110).gifKonstruktoren

basic_filebuf

Erstellt ein Objekt vom Typ basic_filebuf.

tzf8k3z8.collapse_all(de-de,VS.110).gifTypedefs

char_type

Ordnet einen Typnamen mit dem Elem Vorlagenparameter.

int

Macht diesen Typ in basic_filebuf's äquivalent zum Typ mit demselben Namen im Bereich der Tr Bereich.

off_type

Macht diesen Typ in basic_filebuf's äquivalent zum Typ mit demselben Namen im Bereich der Tr Bereich.

POS

Macht diesen Typ in basic_filebuf's äquivalent zum Typ mit demselben Namen im Bereich der Tr Bereich.

traits_type

Ordnet einen Typnamen mit dem Tr Vorlagenparameter.

tzf8k3z8.collapse_all(de-de,VS.110).gifMember-Funktionen

Schließen

Schließt eine Datei.

is_open

Gibt an, ob eine Datei geöffnet ist.

Öffnen

Öffnet eine Datei.

Überlauf

Eine geschützte virtuelle Funktion, die aufgerufen werden kann, wenn ein neues Zeichen in einem vollständigen Puffer eingefügt wird.

pbackfail

Die geschützten virtuellen Member-Funktion versucht, setzen Sie wieder ein Element in dem Eingabestream, dann machen es das aktuelle Element (mit der nächsten Zeiger verwiesen).

seekoff

Die geschützten virtuellen Member-Funktion versucht, die aktuellen Positionen für die kontrollierte Datenströme zu ändern.

seekpos

Die geschützten virtuellen Member-Funktion versucht, die aktuellen Positionen für die kontrollierte Datenströme zu ändern.

setbuf

Die geschützten virtuellen Member-Funktion führt eine Operation bestimmten zu jeder abgeleiteten Streampuffer.

Swap

Tauscht den Inhalt dieses basic_filebuf für den Inhalt der bereitgestellten basic_filebuf Parameter.

Sync

Geschützte, virtuelle Funktion versucht, die kontrollierte Datenströme mit allen zugeordneten externe Streams zu synchronisieren.

uflow

Geschützt, virtuelle Funktion zum Extrahieren des aktuellen Elements aus dem Eingabestream.

Unterlauf

Geschützt, virtuelle Funktion zum Extrahieren des aktuellen Elements aus dem Eingabestream.

Anforderungen

Header: <fstream>

Namespace: std

Siehe auch

Referenz

Threadsicherheit in der C++-Standardbibliothek

Programmierung der iostream-Headerdatei

iostreams Konventionen

Weitere Ressourcen

<fstream> Member

basic_filebuf Member