[英]How to programmatically (C/C++) get Country code on Linux?
我正在將應用程序移植到Linux(從Windows)中。
我有這樣的代碼:
char buffer[32] = {0};
if ( GetLocaleInfoA(LOCALE_USER_DEFAULT, LOCALE_ICOUNTRY, buffer, _countof(buffer)) )
{
std::string newPrefix(buffer);
if ( !newPrefix.empty() && ( newPrefix != "-1" ) )
{
countryPrefix_ = newPrefix;
}
}
我需要一個函數,該函數返回“基於國際電話代碼的國家/地區代碼”(例如,“ 1”代表美國和加拿大,“ 61”代表澳大利亞等)
該國家/地區應來自操作系統的日期/時間設置(在Windows中:控制面板-區域和語言選項)。
Unix沒有操作系統范圍的語言環境設置。 可以為不覆蓋它的用戶使用默認值,但是大多數用戶都可以覆蓋它。 並將其保留為“ C”是很常見的。
沒有標准的C或C ++方法來獲取所需的信息。
posix獲取與語言環境相關的信息的方法是設置語言環境,並使用nl_langinfo()(返回char*
)。 雖然沒有為國際電話代碼定義POSIX宏,但glibc為其擴展了( _NL_TELEPHONE_INT_PREFIX
)。
例:
#include <langinfo.h>
...
if (setlocale(LC_ALL, "") == NULL) {
fprintf(stderr, "Unable to set locale.\n");
abort();
}
printf("Telephone international prefix: %s\n", nl_langinfo(_NL_TELEPHONE_INT_PREFIX));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.