_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 (<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 類別
請參閱
參考
strlen、 strlen_l、 wcslen、 wcslen_l、 _mbslen、 _mbslen_l、 _mbstrlen、 _mbstrlen_l
strftime、 wcsftime、 _strftime_l、 _wcsftime_l