_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
с расширенными символами; аргумент locale
для _wcreate_locale
— строка расширенных символов. Поведение_wcreate_locale
и _create_locale
идентично в противном случае.
Аргумент category
определяет соответствующие фрагменты поведения, связанные с локальным стандартом. Флаги, используемые для 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
может принимать несколько типов значений: имя языкового стандарта, языковая строка, код языка и страны или региона, код кодовой страницы или сочетание языковой строки, кода страны или региона и кодовой страницы. Набор (доступных имен языков, языков, кодов стран или регионов и кодовых страниц) включает все, которые поддерживаются API NLS Windows. Набор поддерживаемых имен _create_locale
языков описан в строках языкового стандарта, языков и стран или регионов. Набор строк языка и страны или региона, поддерживаемых _create_locale
в строках языка и регионе, перечислены в строках языка и странах или регионах.
Дополнительные сведения о параметрах языкового стандарта см. в разделе setlocale
. _wsetlocale
Предыдущее название этой функции, __create_locale
(с двумя символами подчеркивания в начале), использовать не рекомендуется.
По умолчанию глобальное состояние этой функции ограничивается приложением. Чтобы изменить это поведение, см . статью "Глобальное состояние" в CRT.
Требования
Маршрут | Обязательный заголовок |
---|---|
_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'
См. также
Имена языков, языки и строки страны или региона
Языковые строки
Строки страны и региона
_free_locale
_configthreadlocale
setlocale
Локаль
localeconv
_mbclen
, , mblen
_mblen_l
strlen
, , wcslen
_mbslen_l
_mbslen
_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