我有一个C++应用程序,需要检索当前用户的区域设置。我如何在OSX约塞米蒂和更新版本中做到这一点?我尝试过类似setlocale(LC_CTYPE, NULL);的东西,但它只返回UTF-8,而我的系统显然是西班牙语(es_AR)
setlocale(LC_CTYPE, NULL);
UTF-8
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>
CFLocale
kCFLocaleLanguageCode
#include <CoreFoundation/CoreFoundation.h>
1条答案
按热度按时间kmynzznz1#
经过一些尝试和错误和大量的帮助,从互联网和其他问题,我做到了。
如果我只想得到语言。
这样,在str中我将得到一个带有语言的std::string。如果我需要其他东西,我可以用
CFLocale
中的任何其他常量替换kCFLocaleLanguageCode
我还需要头
#include <CoreFoundation/CoreFoundation.h>