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


strxfrm, wcsxfrm, _strxfrm_l, _wcsxfrm_l

Преобразование строки на основе данных для конкретного языкового стандарта.

size_t strxfrm(
   char *strDest,
   const char *strSource,
   size_t count 
);
size_t wcsxfrm(
   wchar_t *strDest,
   const wchar_t *strSource,
   size_t count 
);
size_t _strxfrm_l(
   char *strDest,
   const char *strSource,
   size_t count,
   _locale_t locale
);
size_t wcsxfrm_l(
   wchar_t *strDest,
   const wchar_t *strSource,
   size_t count,
   _locale_t locale
);

Параметры

  • strDest
    Строка цели.

  • strSource
    Строка источника.

  • count
    Максимальное число символов, записываемый в strDest*.*

  • locale
    Языковой стандарт, который необходимо использовать.

Возвращаемое значение

Возвращает длину преобразованной строки не учитываются, которая нуль-символ.Если возвращаемое значение больше или равно countсодержимое strDest становятся непредсказуемыми.При ошибке, каждая функция устанавливает errno возвращает INT_MAX.Для недопустимого символа errno равно EILSEQ.

Заметки

strxfrm функция преобразует указанную строку на strSource в новой форме, которая хранится внутри разбирается по копиям strDest.Не больше count знаки, в том числе нуль-символ, преобразование и помещаются в результирующую строку.Преобразование осуществляется с помощью метода locale LC_COLLATE параметр категории.Дополнительные сведения LC_COLLATEсм. setlocale.strxfrm использует текущий языковой стандарт для его расширениях функциональности, зависимых от языковых стандартов. _strxfrm_l идентичны, за исключением того, что он использует языковой стандарт переданный вместо текущего языкового стандарта.Дополнительные сведения см. в разделе Языковой стандарт.

После преобразования вызов strcmp преобразованными с 2 строками формирует результаты идентичные к этому из вызова strcoll применяется к исходному 2 строкам.Как и strcoll и stricoll" strxfrm автоматически обрабатывает характерные черты.

wcsxfrm версия расширенных символов strxfrm; аргументы строки wcsxfrm указатели расширенных символов.Для wcsxfrmпосле преобразования строк, вызов wcscmp преобразованными с 2 строками формирует результаты идентичные к этому из вызова wcscoll применяется к исходному 2 строкам.wcsxfrm и strxfrm поступайте совпадают, в противном случае.wcsxfrm использует текущий языковой стандарт для его расширениях функциональности, зависимых от языковых стандартов. _wcsxfrm_l использует языковой стандарт переданный вместо текущего языкового стандарта.

Эти функции проверяют их параметры.If strSource указатель null или strDest указатель NULL (если количество не будет нуль) или count больше INT_MAXнедопустимый параметр, обработчик вызывается, как описано в разделе Проверка параметров .Если выполнение может быть продолжено, то эти функции установки errno В EINVAL и извлечение INT_MAX.

Сопоставления подпрограммы Родов-Текста

Подпрограмма TCHAR.H

_MBCS не заданные _UNICODE &

Указанный символ _MBCS

Указанный _UNICODE

_tcsxfrm

strxfrm

strxfrm

wcsxfrm

_tcsxfrm_l

_strxfrm_l

_strxfrm_l

_wcsxfrm_l

В языковом стандарте "c", порядок знаков в символе - набор (кодировка ASCII) такой же, как и лексикографический порядок символов.Однако в других языковых стандартах, порядок символов в символе - набор может отличаться от порядка лексикографического знака.Например, в некоторых европейских языковых стандартах, символ "a" (значение 0x61) предшествует знак "ä" (значение 0xE4) в символе - укажите, но знак "ä" предшествует символ "a" лексикографически.

В языковых стандартах, для которых кодировку и порядок лексикографический символа отличается, использующий strxfrm на исходные строки, а затем strcmp в итоговом строках, чтобы сформировать лексикографическое сравнение строк согласно текущему языковому стандарту LC_COLLATE параметр категории.Таким образом, сравнение 2 строк лексикографически в языковом стандарте, представленном выше strxfrm в исходной строке, после чего strcmp в результирующей строке.Кроме того, можно использовать strcoll вместо strcmp на исходные строки.

strxfrm по сути, программа-оболочка вокруг LCMapString с LCMAP_SORTKEY.

Значение следующего выражения размер массива необходимо для хранения strxfrm преобразование строки источника:

1 + strxfrm( NULL, string, 0 )

В языковом стандарте "c", strxfrm эквивалентны:

strncpy( _string1, _string2, _count );
return( strlen( _string1 ) );

Требования

Процедура

Обязательный заголовок

strxfrm

<string.h>

wcsxfrm

<string.h> OR <wchar.h>

_strxfrm_l

<string.h>

_wcsxfrm_l

<string.h> OR <wchar.h>

Дополнительные сведения о совместимости см. Совместимость во введении.

Эквивалент в .NET Framework

Неприменимо. Для c# используйте стандартная функция PInvoke. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода.

См. также

Ссылки

Преобразование данных

localeconv

setlocale, _wsetlocale

Языковой стандарт

Управление строками (CRT)

функции strcoll

strcmp, wcscmp, _mbscmp

strncmp, wcsncmp, _mbsncmp, _mbsncmp_l