Поделиться через


_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, и их влияние на части программы показаны в следующей таблице.

  • 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 многоязыковой поддержки Windows, кроме кодовых страниц, требующие более двух байт на символ, например, UTF-7 и UTF-8. Если указать кодовую страницу, подобную 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