如何使用C++在OSX中获取当前用户的区域设置

c9x0cxw0  于 2023-05-02  发布在  其他
关注(0)|答案(1)|浏览(111)

我有一个C++应用程序,需要检索当前用户的区域设置。我如何在OSX约塞米蒂和更新版本中做到这一点?
我尝试过类似setlocale(LC_CTYPE, NULL);的东西,但它只返回UTF-8,而我的系统显然是西班牙语(es_AR)

kmynzznz

kmynzznz1#

经过一些尝试和错误和大量的帮助,从互联网和其他问题,我做到了。
如果我只想得到语言。

CFLocaleRef cflocale = CFLocaleCopyCurrent();
auto value = (CFStringRef)CFLocaleGetValue(cflocale, kCFLocaleLanguageCode);    
std::string str(CFStringGetCStringPtr(value, kCFStringEncodingUTF8));
CFRelease(cflocale);

这样,在str中我将得到一个带有语言的std::string。如果我需要其他东西,我可以用CFLocale中的任何其他常量替换kCFLocaleLanguageCode
我还需要头#include <CoreFoundation/CoreFoundation.h>

相关问题