テンプレートによる新しい入出力ストリームには、ユーザー定義の文字型が格納されていることも、在来型入出力ストリームとは基本的に異なる点です。新しい入出力ストリームでは、通常の char だけでなく、任意の文字型に似た C++ 入出力ストリームのインタフェースを使用することができるようになりました。
この柔軟性を得るためには条件があります。ユーザー定義の文字型には、厳しい制約が課せられるようになりました。ほとんどの状況で、型は通常の char として動作することを求められます。また、入出力ストリームの環境で型をサポートするためには、いくつかのクラスを定義する必要があります。
一般に、ユーザー定義の文字型は、次の条件を満たす必要があります。
さらに、ユーザー定義の型のオブジェクトと char 型のオブジェクトの間の変換ができることが求められます。このような個々の変換機能を、型自体の一部分とする必要はありません。これらの変換機能は、新しい型に必要な新しい文字分類ファセットの一部として定義します。これらの変換機能については、この後で説明します。
次の型は、ユーザー定義の型の条件を満たします。
struct Echar { Echar():c(0),i(0) {;} Echar(char cc):c(cc),i(0) {;} Echar(char cc,char ii):c(cc),i(ii) {;} operator int() { return c; } char c; char i; }; bool operator==(const Echar& lhs, const Echar& rhs) { return lhs.c == rhs.c; } bool operator!=(const Echar& lhs, const Echar& rhs) { return !(lhs.c == rhs.c); } bool operator<(const Echar& lhs, const Echar& rhs) { return lhs.c < rhs.c; }
Copyright (c) 1998, Rogue Wave Software, Inc.
このマニュアルに関する誤りのご指摘やご質問は、電子メールにてお送りください。
OEM リリース, 1998 年 6 月