如何获取我的线程的区域设置名称?

时间:2013-05-08 01:28:49

标签: c++ c windows winapi crt

说,我可以使用_create_locale来设置我的C程序中的语言环境:

localeUS = _create_locale(LC_ALL, "English_United States.1252");

但我需要的是相反的,即检索调用线程的语言环境名称(上面函数的第二个参数)。知道怎么做吗?

PS。我知道现代Windows使用LCID。我需要这个区域设置名称以与旧代码兼容。

1 个答案:

答案 0 :(得分:3)

希望您可以使用标准C ++。

来自std::locale::name

实施例

#include <locale>
#include <iostream>
#include <string>

int main()
{
    std::locale loc(std::locale(), new std::ctype<char>);
    std::cout << "The default locale is " << std::locale().name() << '\n'
              << "The user's locale is " << std::locale("").name() << '\n'
              << "A nameless locale is " << loc.name() << '\n';
}

输出:

The default locale is C
The user's locale is en_US.UTF8
A nameless locale is *