Скажем, я могу установить локаль из моей программы на C, используя _create_locale в качестве таких:
localeUS = _create_locale(LC_ALL, "English_United States.1252");
Но то, что мне нужно, — это наоборот, то есть получить имя локали (2-й аргумент функции выше) для вызывающего потока. Есть идеи, как это сделать?
PS. Я знаю, что современная Windows использует LCID. Мне нужно это имя локали для совместимости со старым кодом.
Надеюсь, вы можете использовать стандарт C ++.
пример
#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 *
Других решений пока нет …