## 21.1 ロケールと入出力ストリーム

標準 C++ ライブラリの入出力ストリームで、locale はクラスです。クラス locale は、次の 2 つの使用目的があります。

- 入出力ストリームの書式設定層で、数値の書式設定と文字の分類に locale 機能を使用する。
- 移送層で、locale 機能を使用してコード変換を行う。

標準入出力ストリームクラスの書式設定 (ストリーム) 層では、ctype ファセット、num_put ファセット、num_get ファセットだけを使用し、移送 (ストリームバッファ) 層では、codecvt ファセットだけを使用します。ロケールとファセットの詳細については、第 3 章と、『標準 C++ クラスライブラリ・リファレンス 』の locale クラスと各ファセットに関する節を参照してください。

各層には、専用の locale があり、コード変換機能は数値の書式設定とは関係なく変更することができます。ストリームバッファに対応するロケールは、バッファを使用するストリームのロケールを変更せずに変更することができます。一方、ストリームのロケールを変更すると、対応するストリームのバッファに組み込まれているロケールも変更されます。

すべてのストリームの基底クラスである ios_base には locale が組み込まれています。このロケールは、`getloc()` 関数でアクセスすることができ、`imbue()` 関数で変更することができます。同様に、basic_streambuf クラスにはロケールが組み込まれており、`getloc()` 関数と `pubimbue()` 関数があります。ストリームバッファには、限定公開の `imbue()` 関数があります。いずれの場合も、派生クラスで地域対応化の実装方法を変更できるように、`imbue()` 関数は仮想になっています。

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

OEM リリース, 1998 年 6 月