_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 (&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