概要
ロケールを設定する。
効果
ios_base::imbue(loc)
を呼び出した後、rdbuf() != 0
であれば、rdbuf()->pubimbue(loc)
を呼び出す。
戻り値
備考
ios_base::imbue()
は仮想関数ではないため、ios_base
へのポインタや参照経由で imbue()
を呼び出した場合には本関数ではなく ios_base::imbue()
が呼び出される。
例
#include <iostream>
#include <locale>
int main()
{
std::cout.imbue(std::locale::classic());
std::cout << 1234.5 << '\n';
std::cout.imbue(std::locale("en_US"));
std::cout << 1234.5 << '\n';
std::cout.imbue(std::locale("de_DE"));
std::cout << 1234.5 << '\n';
// ios_base への参照経由で呼び出すと、ストリームバッファのロケールは変更されない
std::ios_base& base = std::cout;
base.imbue(std::locale::classic());
std::cout << std::cout.rdbuf()->getloc().name() << '\n';
}
出力例
1234.5
1,234.5
1.234,5
de_DE
なお、ロケールの名称(ここでは en_US
と de_DE
)は環境依存のため、上記の例は動作しないこともある。
その場合でも、ロケールの名称を当該環境で適切なものに変更すれば動作するはずである。
また、2 行目・3 行目の出力はロケール依存のため、たとえこれらのロケールが使用できたとしても上記のようには出力されない可能性もある(が、一般的にはこのように出力される)。
バージョン
言語
- C++98