次の方法で共有


basic_filebuf Class

型の要素の転送を制御するストリーム バッファーについて説明Elemを持つ文字の特徴クラスによって決まりますTr、および外部ファイルに格納されている要素のシーケンスから。

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

パラメーター

  • Elem
    ファイル バッファーの基本的な要素です。

  • Tr
    ファイル バッファーの基本的な要素の特徴 (通常はchar_traits<Elem>)。

解説

テンプレート クラスの型の要素の転送を制御する、ストリーム バッファーについて説明します。 Elemを持つ文字の特徴クラスによって決まりますTr、および外部ファイルに格納されている要素のシーケンスから。

[!メモ]

オブジェクトの種類のbasic_filebuf型の内部バッファーが作成されますchar *に関係なく、 char_type 、type パラメーターで指定されたElem。これは、Unicode 文字列を意味 (を含むwchar_t文字) を ANSI 文字列に変換されます (を含むchar文字) を内部バッファーに書き込まれる前に。Unicode 文字列をバッファーに格納するには、新しいバッファーの種類を作成します。 wchar_tとを使用して設定、 basic_streambuf::pubsetbuf()メソッド。この動作を示す例を参照するには、以下を参照してください。

An object of class basic_filebuf<Elem, Tr> 指定ファイルのポインターを格納する、 FILE 、開いているファイルに関連付けられたストリームを制御するオブジェクト。プロテクト メンバー関数での使用の 2 つのファイル変換ファセットへのポインターを格納オーバーフローアンダー フロー。詳細については、「basic_filebuf::open」を参照してください。

使用例

次の使用例は、型のオブジェクトを強制的に行う方法を示しています**basic_filebuf<wchar_t>**を呼び出すことにより、内部バッファー内の Unicode 文字を格納するのには、 **pubsetbuf()**メソッド。

// 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(ja-jp,VS.110).gifコンストラクター

basic_filebuf

オブジェクトの型を構築するbasic_filebuf

tzf8k3z8.collapse_all(ja-jp,VS.110).gifTypedef

char_type

型名とを関連付けます、 Elemテンプレート パラメーター。

int_type

このタイプのようになりますbasic_filebufのと同じ種類で同じ名前のスコープはTrスコープ。

off_type

このタイプのようになりますbasic_filebufのと同じ種類で同じ名前のスコープはTrスコープ。

pos_type

このタイプのようになりますbasic_filebufのと同じ種類で同じ名前のスコープはTrスコープ。

traits_type

型名とを関連付けます、 Trテンプレート パラメーター。

tzf8k3z8.collapse_all(ja-jp,VS.110).gifメンバー関数

閉じる

ファイルを閉じます。

is_open

ファイルが開いているかどうかを示します。

開く

ファイルを開きます。

オーバーフロー

バッファーがいっぱいに、新しい文字を挿入したときに呼び出すことができますは、保護された仮想関数です。

pbackfail

保護された仮想メンバー関数は、入力ストリームに要素を戻すし、(次のポインターが指す) 現在の要素を確認しようとします。

seekoff

保護された仮想メンバー関数は、制御されたストリームの現在位置を変更しようとします。

seekpos

保護された仮想メンバー関数は、制御されたストリームの現在位置を変更しようとします。

setbuf

各派生ストリーム バッファーには、操作固有の保護された仮想メンバー関数を実行します。

スワップ

このコンテンツを交換basic_filebufは、提供されているbasic_filebufパラメーター。

同期

保護されている、仮想関数は、関連付けられた外部ストリームと、制御されたストリームを同期しようとします。

uflow

保護された、入力ストリームから現在の要素を抽出するのには、仮想関数します。

アンダー フロー

保護された、入力ストリームから現在の要素を抽出するのには、仮想関数します。

必要条件

ヘッダー: <fstream>

名前空間: std

参照

関連項目

C++ の標準ライブラリのスレッド セーフ

入出力ストリームのプログラミング

入出力ストリームの規則

その他の技術情報

<fstream> メンバー

basic_filebuf のメンバー