_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 (<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'
Эквивалент в .NET Framework
Класс System::Globalization::CultureInfo
См. также
Ссылки
Строки имени языкового стандарта, языка и страны и региона
strlen, strlen_l, wcslen, wcslen_l, _mbslen, _mbslen_l, _mbstrlen, _mbstrlen_l
strftime, wcsftime, _strftime_l, _wcsftime_l