_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 framework 使用 _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 windows API 支持的一些。 如果您提供与 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