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