共用方式為


_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 結構中。 當不再需要時,應釋放 _locale_t 結構使用 _free_locale

_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 和 locale 參數。 如果分類參數不是上表中指定的其中一個值,如果 locale 是 NULL,函式會傳回 NULL。

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

locale 引數可能會將地區設定名稱、語言字串、語言字串和國家/地區碼、字碼頁或語言字串、國家/地區碼和字碼頁。 可用的地區設定名稱、語言、國家/地區碼和字碼頁包含除了需要超過每個字元的兩個位元組,例如 UTF-7 及 UTF-8 的字碼頁的視窗 NLS 應用程式開發介面支援的項目。 如果您提供像 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 類別

請參閱

參考

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

語言字串

國家/地區字串

_free_locale

_configthreadlocale

setlocale

地區設定

localeconv

_mbclen,mblen _mblen_l

strlen、 strlen_l、 wcslen、 wcslen_l、 _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