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

Fer*_*ndo 4 c++ macos

我有一个 C++ 应用程序,需要检索当前用户的区域设置。我如何使用 OSX Yosemite 及更新版本来做到这一点?

我尝试过类似的方法setlocale(LC_CTYPE, NULL);,但它只是返回UTF-8我的系统明显是西班牙语的位置(es_AR)

Fer*_*ndo 5

经过一番尝试和错误以及互联网和其他问题的大量帮助后,我做到了。

如果我只想获得语言。

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

这样,在 str 我将获得带有该语言的 std::string 。如果我需要其他东西,我可以kCFLocaleLanguageCode用任何其他常量替换CFLocale

我还需要标题#include <CoreFoundation/CoreFoundation.h>