2012-03-29 3 views
7

В C++, я могу установить текущей локали вроде этого:Получить глобальную локаль, установленную в настоящее время на C++?

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

Но как я могу получить текущий глобальный локали?

В моем коде мне нужно получить текущую локаль, сохранить ее в tmp var, установить глобальную локаль на что-то еще, вывести что-то, а затем установить ее обратно в предыдущую локаль.

+0

Не использовали его, но это то, что вам нужно? http://en.cppreference.com/w/cpp/io/ios_base/getloc edit: неважно, я обнаружил, что возвращаемое значение является текущей локалью. См. Ответ Корбина. – 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, конструктор по умолчанию для станд :: локали дает копию текущего глобального стандарта, но почему вам нужно кэшировать, а затем сбросить глобальный язык?

Подпрограммы на языке C++, которые используют локаль, обычно могут использовать заданный вами язык локали C++, поэтому вам вообще не нужно связываться с глобальной локалью. Использование локальных объектов должно быть предпочтительнее использования глобального языкового стандарта C++.

Смежные вопросы