2012-03-29 2 views
7

は、私はこのような現在のロケールを設定することができます。現在C++で設定されているグローバルロケールを取得しますか? C++で

std::locale::global(std::locale(name)) 

をしかし、どのように、私は現在のグローバルロケールを取得ことができますか?

私のコードでは、現在のロケールを取得し、tmp varに保存し、グローバルロケールを別のものに設定して何かを出力し、それを以前のロケールに戻す必要があります。

+0

これを使用していないのですが、これはあなたの後のことですか? http://en.cppreference.com/w/cpp/io/ios_base/getloc編集:心配しないで、戻り値が現在のロケールであることがわかりました。コービンの答えを見てください。 – chris

+0

グローバルロケール(デフォルトは '' C '')か環境のロケールを使いますか? –

+0

誰かが 'std :: locale :: global'を使う前に設定した値が必要です。 – Frank

答えて

14

デフォルトのコンストラクタであるstd::localeを呼び出すと、それを得ることができます。ここ

std::locale the_global_locale; // <-- automatically correct to std::locale::global 
           //  or a copy of std::locale::classic 

さらに詳しい情報:http://en.cppreference.com/w/cpp/locale/locale/locale

2

IPCが言うように、のstd ::ロケールのデフォルトコンストラクタはあなたに現在のグローバルロケールのコピーを与えていますが、その後、キャッシュとする必要がない理由をリセットグローバルロケール?

ロケールを使用するC++ルーチンは、通常、指定したC++ロケールオブジェクトを使用することができるため、グローバルロケールをまったく混乱させる必要はありません。ロケールオブジェクトの使用は、C++グローバルロケールを使用するよりも優先されるべきです。

関連する問題