共用方式為


_create_locale、_wcreate_locale

建立地區物件。

_locale_t _create_locale(
   int category,
   const char *locale 
);
_locale_t _wcreate_locale(
   int category,
   const wchar_t *locale 
);

參數

  • category
    分類

  • locale
    地區設定指定名稱

傳回值

如果有效的 locale 和 category 被指定,指定的地區設定以 _locale_t 物件傳回。 未變更目前程式的目前地區設定。

備註

_create_locale 函式可讓您建立表示某些特定區域設定的物件,可用於許多 CRT 函式 (有 _l 尾碼的函式) 地區設定特定版本。 行為與 setlocale類似,不同的是,非套用至目前環境中指定的地區設定,這些設定被儲存在回傳的 _locale_t 結構中。 當不再需要時,應使用 _free_locale 釋放 _locale_t 結構。

_wcreate_locale 是 _create_locale 的寬字元版本。 _wcreate_locale 的 locale 引數是寬字元字串。 _wcreate_locale 和 _create_locale 其餘行為相同。

category 引數指定受影響地區設定特定行為的一部分。 用於 category 的旗標和它們會影響程式的部分如下表所示。

  • LC_ALL
    所有分類,如下所列。

  • LC_COLLATE
    strcoll、_stricoll、 wcscoll、_wcsicoll、 strxfrm、 _strncoll、 _strnicoll、 _wcsncoll、_wcsnicoll、以及 wcsxfrm函式。

  • LC_CTYPE
    字元處理函式 (除了 isdigit、 isxdigit、 mbstowcs和 mbtowc,這些不會受到影響)。

  • LC_MONETARY
    localeconv 函式傳回的貨幣格式資訊。

  • LC_NUMERIC
    小數點的字元格式化輸出的常式 (例如 printf),則資料轉換常式的和對於非貨幣的格式化資訊由 localeconv傳回。 除了十進位點字元以外, LC_NUMERIC 設定由 localeconv傳回的千位分隔符號和群組控制項字串。

  • LC_TIME
    strftime 以及 wcsftime函式。

這個函式會驗證category and locale 參數。 如果分類參數不是上表中指定的其中一個值或 locale 是 NULL,函式會傳回 NULL。

locale 引數是指向指定地區設定的字串指標。 如需 locale 引數格式的詳細資訊,請參閱 地區設定名稱、語言和國家/地區字串

locale 引數可以讀取地區設定名稱、語言字串、語言字串和國家/地區碼、字碼頁或語言字串、國家/地區碼和字碼頁。 可用的地區設定名稱、語言、國家/地區碼和字碼頁的集合,包含所有Windows NLS 應用程式開發介面所支援的項目,但不包含需要超過每個字元的兩個位元組(例如 UTF-7 及 UTF-8) 的字碼頁。 如果您提供如UTF-7 或 UTF-8 的字碼頁,則 _create_locale 將會失敗並傳回 null。 _create_locale 支援的地區設定名稱集合在 地區設定名稱、語言和國家/地區字串中說明。 _create_locale 所支援的語言和國家/地區字串列在 語言字串國家/地區字串中。

如需地區設定的詳細資訊,請參閱setlocale、_wsetlocale

這個函式__create_locale 先前的名稱 (與兩個前置底線),已被取代。

需求

常式

必要的標頭

_create_locale

<locale.h - 地區設定>

_wcreate_locale

<locale.h> 或 <wchar.h>

如需其他相容性資訊,請參閱相容性

範例

// crt_create_locale.c
// Sets the current locale to "de-CH" using the
// setlocale function and demonstrates its effect on the strftime
// function.

#include <stdio.h>
#include <locale.h>
#include <time.h>

int main(void)
{
       time_t ltime;
       struct tm thetime;
       unsigned char str[100];
       _locale_t locale;

       // Create a locale object representing the German (Switzerland) locale
       locale = _create_locale(LC_ALL, "de-CH");
       time (&ltime);
       _gmtime64_s(&thetime, &ltime);

       // %#x is the long date representation, appropriate to
       // the current locale
       //
       if (!_strftime_l((char *)str, 100, "%#x", 
                     (const struct tm *)&thetime, locale))
               printf("_strftime_l failed!\n");
       else
               printf("In de-CH locale, _strftime_l returns '%s'\n", 
                      str);

       _free_locale(locale);

       // Create a locale object representing the default C locale
       locale = _create_locale(LC_ALL, "C");
       time (&ltime);
       _gmtime64_s(&thetime, &ltime);

       if (!_strftime_l((char *)str, 100, "%#x", 
                     (const struct tm *)&thetime, locale))
               printf("_strftime_l failed!\n");
       else
               printf("In 'C' locale, _strftime_l returns '%s'\n", 
                      str);

       _free_locale(locale);
}

範例輸出

In de-CH locale, _strftime_l returns 'Samstag, 9. Februar 2002'
In 'C' locale, _strftime_l returns 'Saturday, February 09, 2002'

.NET Framework 對等用法

System::Globalization::CultureInfo Class

請參閱

參考

地區設定名稱、語言和國家/地區字串

語言字串

國家/地區字串

_free_locale

_configthreadlocale

setlocale

地區設定

localeconv

_mbclen、mblen、_mblen_l

strlen、wcslen、_mbslen、_mbslen_l、_mbstrlen、_mbstrlen_l

mbstowcs、_mbstowcs_l

mbtowc、_mbtowc_l

_setmbcp

setlocale、_wsetlocale

strcoll 函式

strftime、wcsftime、_strftime_l、_wcsftime_l

strxfrm、wcsxfrm、_strxfrm_l、_wcsxfrm_l

wcstombs、_wcstombs_l

wctomb、_wctomb_l