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

В C++, я могу set текущая локаль, как это:

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

но как я могу get текущая глобальная локаль?

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

3 ответов


Если вы вызываете конструктор по умолчанию 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


его возвращаемое значение-старый язык, поэтому просто используйте его.

locale l = locale::global(locale(name));
//do some stuff here
locale::global(l);

Edit: потенциально полезно:http://en.cppreference.com/w/cpp/locale/locale/global


Как говорит ipc, конструктор по умолчанию для std:: locale дает вам копию текущей глобальной локали, но почему вам нужно кэшировать, а затем сбросить глобальную локаль?

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