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

Дополнительные сведения о параметрах языкового стандарта см. в разделе setlocale, _wsetlocale.

Стали нерекомендуемыми старое имя этой функции - __create_locale (2 с символами подчеркивания, приводя).

Требования

Функция

Требуемый заголовок

_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