Получить глобальную локаль, которая в настоящее время установлена в C++?
В C++ я могу установить текущую локаль так:
std::locale::global(std::locale(name))
Но как я могу получить текущую глобальную локаль?
В моем коде мне нужно получить текущую локаль, сохранить ее в переменную tmp, установить глобальную локаль на что-то другое, вывести что-то, а затем вернуть ее на предыдущую локаль.
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);
Изменить: Потенциально полезно: http://en.cppreference.com/w/cpp/locale/locale/global
Как говорит ipc, конструктор по умолчанию для std::locale дает вам копию текущей глобальной локали, но зачем вам кэшировать, а затем сбрасывать глобальную локаль?
Подпрограммы C++, использующие локаль, обычно могут использовать указанный вами объект локали C++, поэтому вам вообще не нужно связываться с глобальной локалью. Использование объектов локали должно быть предпочтительнее использования глобальной локали C++.