获取当前在C ++中设置的全局语言环境?

时间:2012-03-29 20:36:29

标签: c++ locale

在C ++中,我可以设置当前的语言环境,如下所示:

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

但是我如何获取当前的全局区域设置?

在我的代码中,我需要获取当前的语言环境,将其保存到tmp var,将全局语言环境设置为其他内容,输出内容,然后将其设置回以前的语言环境。

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:5)

它的返回值是旧的语言环境,所以只需使用它。

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

修改:可能有用:http://en.cppreference.com/w/cpp/locale/locale/global

答案 2 :(得分:2)

正如ipc所说,std :: locale的默认构造函数为您提供了当前全局语言环境的副本,但为什么需要缓存然后重置全局语言环境?

使用区域设置的C ++例程通常可以使用您指定的C ++区域设置对象,因此您根本不必混淆全局区域设置。使用区域设置对象应优先使用C ++全局区域设置。