Получить глобальную локаль, которая в настоящее время установлена в 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++.