Aracılığıyla paylaş


basic_filebuf Class

Türdeki öğeleri iletimini denetleyen bir akış arabellek tanımlar Elem, karakteri olan nitelikler sınıfı tarafından belirlenen Tr, gelen ve harici bir dosyada saklanan öğelerin sırasını.

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

Parametreler

  • Elem
    Dosya arabelleği temel öğesi.

  • Tr
    Nitelikler temel öğenin dosya arabelleği (genellikle char_traits<Elem>).

Notlar

Şablon sınıfı türü öğelerini iletimini denetleyen bir akış arabellek tanımlar Elem, karakteri olan nitelikler sınıfı tarafından belirlenen Tr, gelen ve harici bir dosyada saklanan öğelerin sırasını.

[!NOT]

Nesne türü basic_filebuf iç arabellek türü ile oluşturulan char * olsun char_type türü parametresi tarafından belirtilen Elem.Bu bir Unicode dize anlamına gelir (içeren wchar_t karakter) bir ANSI dizesi dönüştürülmüş (içeren char karakterler) iç arabellek yazılmadan önce.Arabellekte Unicode dizeleri depolamak için yeni bir arabellek türü oluşturmak wchar_t ve bunu kullanarak basic_streambuf::pubsetbuf() yöntemi.Bu davranış gösteren bir örnek görmek için aşağıya bakın.

An object of class basic_filebuf<Elem, Tr> atayan bir dosya işaretçisi depolar FILE açık bir dosya ile ilişkili akışını denetleyen bir nesne.Bunu da iki dosya dönüştürme özellikleri kullanmak için işaretçiler tarafından korunan üye işlevler depolar taşma ve Yetersizlik durumu.Daha fazla bilgi için bkz. basic_filebuf::open.

Örnek

Aşağıdaki örnek bir nesne türü zorla gösterilmiştir basic_filebuf<wchar_t> çağırarak kendi iç arabelleğini Unicode karakterleri depolamak için pubsetbuf() yöntemi.

// 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(tr-tr,VS.110).gifOluşturucular

basic_filebuf

Türünde bir nesne yapıları basic_filebuf.

tzf8k3z8.collapse_all(tr-tr,VS.110).gifTypeDef

char_type

Bir tür adıyla ilişkilendirir Elem şablon parametresi.

int_type

Bu tür içinde yaptığı basic_filebuf's kapsama alanındaki aynı adlı türüne eşdeğer Tr kapsamı.

off_type

Bu tür içinde yaptığı basic_filebuf's kapsama alanındaki aynı adlı türüne eşdeğer Tr kapsamı.

pos_type

Bu tür içinde yaptığı basic_filebuf's kapsama alanındaki aynı adlı türüne eşdeğer Tr kapsamı.

traits_type

Bir tür adıyla ilişkilendirir Tr şablon parametresi.

tzf8k3z8.collapse_all(tr-tr,VS.110).gifÜye işlevleri

Kapat

Bir dosyayı kapatır.

is_open

Bir dosyanın açık olup olmadığını gösterir.

açık

Bir dosyayı açar.

taşma

Yeni bir karakter tam arabelleğine eklendiğinde çağrılabilir bir korumalı sanal işlevi.

pbackfail

Korumalı sanal üye işlev öğe giriş akımına geri koymak, sonra (sonraki işaretçi işaret) geçerli öğe yapmak çalışır.

seekoff

Denetlenen akışları için geçerli konumlarını değiştirmek korumalı sanal üye işlevi çalışır.

seekpos

Denetlenen akışları için geçerli konumlarını değiştirmek korumalı sanal üye işlevi çalışır.

setbuf

Her türetilmiş Akış Arabellek işlemi belirli bir sanal korunan üye işlevi gerçekleştirir.

Takas

Bu içerik kullanmaz basic_filebuf sağlanan içeriği basic_filebuf parametresi.

Eşitleme

Korumalı, sanal işlevi ile ilişkili herhangi bir dış akış denetimli akışları eşitlemeye çalışır.

uflow

Korumalı, geçerli öğenin girdiden ayıklamak için sanal işlevi.

Yetersizlik durumu

Korumalı, geçerli öğenin girdiden ayıklamak için sanal işlevi.

Gereksinimler

Başlık: <fstream>

Namespace: std

Ayrıca bkz.

Başvuru

Standart C++ Kitaplığı'nda iş parçacığı güvenliği

iostream programlama

iostreams kuralları

Diğer Kaynaklar

<fstream> Üyeler

basic_filebuf üyeleri