Rogue Wave バナー
前へマニュアルの先頭へ目次次へ

20.3 ユーザー定義の型でインスタンス化したストリームの作成と使用

すべてのサポート作業が終了すると、ユーザー定義の型にストリームクラステンプレートのインスタンスを生成し、使用することができますが、まだ完全ではありません。新しいストリームは、ユーザーが定義した新しいファセットを要求しますが、そのためには、そのファセットをおさめるロケールを作成し、それをストリームのロケールに組み込む必要があります。次にその方法を示します。

typedef basic_fstream<Echar,Etraits> Estream;                // 1
locale Eloc(locale(locale(),new Ecodecvt),new Ectype);       // 2
Estream foo("foo.txt");                                      // 3
foo.imbue(Eloc);                                             // 4
//1 特別なストリーム型を、適当な別の型に typedef で定義します。
//2 新しいロケールオブジェクトを作成し、codecvt ファセットと ctype ファセットを、Echar に定義したファセットに置き換えます。既存のロケールと新しいファセットを呼び出すコンストラクタで新しい codecvt ファセットのロケールを作成し、それを利用して、両方とも新しいファセットのロケールを作成します。
//3 Estream を構築します。
//4 置換ファセットを組み込んだロケールを Estream に組み込みます。

以上で、Echar をストリームに挿入して、再び読み出す準備ができました。

Echar e[10];
Estream::pos_type pos = foo.tellp();                           //1
foo << 10;                                                     //2
foo.seekg(pos);                                                //3
foo >> e;                                                      //4
//1 現在の位置を呼び出します。
//2 整数 10 を書き込みます。
//3 シークバックします。
//4 Echars として文字列 10 を 読み取ります。



前へマニュアルの先頭へ目次次へ

Copyright (c) 1998, Rogue Wave Software, Inc.
このマニュアルに関する誤りのご指摘やご質問は、電子メールにてお送りください。


OEM リリース, 1998 年 6 月