_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 的代码页外的所有被Windows NLS 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 Class

请参见

参考

区域设置名称、语言和国家/地区字符串

语言字符串

国家/地区字符串

_free_locale

_configthreadlocale

setlocale

区域设置

localeconv

_mbclen、mblen、_mblen_l

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