C++ のロケールは、標準 C++ ライブラリで提供されるロケールというクラスです。C++ クラスロケールが C 言語でのロケールと違う点は、単なる言語テーブルや、さまざまな文化や言語に依存するデータの表現法ではないということです。C では大域関数になる国際化サービスも、C++ のロケールの一部です。
C++ では、国際化の意味論にはファセットという分割されたクラスで対応しています。 各ファセットでは、通貨の値の形式など、国際化サービスのセットを処理します。ファセットは、通貨情報の規則や記号など文化や言語に依存する情報のセットを表すこともあります。
ロケールオブジェクトは、ファセットオブジェクトのセットを保持します。以下の図 5に示すように、C++ ロケールはファセットのコンテナと考えることもできます。
ファセット クラスでは、文化と言語に依存するデータをカプセル化して、関連のある国際化サービスを提供します。ファセットクラスは非常に柔軟性が高く、どのような国際化サービスをユーザーが開発しても、ファセットクラスに組み入れることができます。標準 C++ ライブラリには多くの標準ファセットがあらかじめ用意してあり、C ライブラリにあるサービスとよく似たサービスを提供しています。ただし、別の国際化サービスを新しいファセットクラスにバンドルしたり、ファセットライブラリを購入することができます。
表 1 にあるように、C 言語でのロケールは、LC_NUMERIC (数字の規則と記号)、LC_TIME (日付と時間の情報)、LC_MONETARY (通貨情報の規則と記号)、LC_CTYPE (文字の分類と変換)、LC_COLLATE (照合順序)、LC_MESSAGES (メッセージの形式と値)という 6 つのロケールに依存する情報のカテゴリから構成されます。
同様に、標準ファセットクラスのセットが 6 つあります。これらのファセットの詳細は、『標準 C++ クラスライブラリ・リファレンス』で説明していますが、その簡単な概要を以下に説明します。num_get <charT,InputIterator> のような略語表現では、num_get は、文字型と入力反復子の型という 2 つのテンプレート引数をとるクラステンプレートであることを表します。標準ファセットのグループを以下に示します。
ファセットクラス numpunct<charT>
では、数字の区切りを指定します。decimal_point()
や thousands_sep() などの関数があります。
標準ファセットの名前は、一定の規則に従っています。num_get と time_get などの get ファセットクラスでは、構文解析を処理します。put ファセットクラスでは書式設定を行います。punct ファセットクラスは、numpunct や moneypunct のように、規則と記号を表します。
Copyright (c) 1998, Rogue Wave Software, Inc.
このマニュアルに関する誤りのご指摘やご質問は、電子メールにてお送りください。
OEM リリース, 1998 年 6 月