最終更新日時:
が更新

履歴 編集

function
<ios>

std::ios_base::imbue

locale imbue(const locale& loc);

概要

ロケールを設定する。

効果

*this で使用するロケールを引数 loc に設定した後、register_callback で登録されたペア (fn, index) を (*fn)(imbue_event, *this, index) として呼び出す。

戻り値

getloc() の変更前の値

備考

  • 呼び出されたコールバック関数の内部で getloc() を呼び出した場合、新たに設定されたロケール(つまり引数 loc で指定されたロケール)が返される。
  • 設定されたロケールは、ロケール依存の入出力に使用される。ただし、ios_base 自体にはロケール依存の入出力関数は存在しない。実際にロケール依存の入出力を行うのは、派生クラスである basic_istream と basic_ostream(および、それらの派生クラス basic_iostream)である。

例

#include <iostream>
#include <locale>

int main()
{
  std::cout.imbue(std::locale::classic());
  std::cout << 1234.5 << std::endl;
  std::cout.imbue(std::locale("en_US"));
  std::cout << 1234.5 << std::endl;
  std::cout.imbue(std::locale("de_DE"));
  std::cout << 1234.5 << std::endl;
}

出力例

1234.5
1,234.5
1.234,5

なお、ロケールの名称(ここでは en_US と de_DE)は環境依存のため、上記の例は動作しないこともある。
その場合でも、ロケールの名称を当該環境で適切なものに変更すれば動作するはずである。
また、最初の行(C ロケール)以外の出力はロケール依存のため、たとえこれらのロケールが使用できたとしても上記のようには出力されない可能性もある(が、一般的にはこのように出力される)。

バージョン

言語

  • C++98

処理系

  • Clang: 3.0 ✅, 3.1 ✅, 3.2 ✅, 3.3 ✅, 3.4 ✅, 3.5.0 ✅, 3.6.0 ✅, 3.7.0 ✅, 3.8.0 ✅
  • GCC: 4.3.6 ✅, 4.4.7 ✅, 4.5.4 ✅, 4.6.4 ✅, 4.7.3 ✅, 4.8.1 ✅, 4.8.2 ✅, 4.9.0 ✅, 4.9.1 ✅, 4.9.2 ✅, 5.1.0 ✅, 5.2.0 ✅, 6.0.0 ✅
  • Visual C++: ??

参照