_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 (<ime);
_gmtime64_s(&thetime, <ime);
// %#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 (<ime);
_gmtime64_s(&thetime, <ime);
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
請參閱
參考
strlen、wcslen、_mbslen、_mbslen_l、_mbstrlen、_mbstrlen_l
strftime、wcsftime、_strftime_l、_wcsftime_l