簡體   English   中英

如何在Linux上以編程方式(C / C ++)獲取國家/地區代碼?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM