_mbsnbcoll, _mbsnbcoll_l, _mbsnbicoll, _mbsnbicoll_l

Сравнивает n байтов двух строк многобайтовых символов, используя данные многобайтовой кодовой страницы.

Важно!

Этот API нельзя использовать в приложениях, выполняемых в среде выполнения Windows. Дополнительные сведения: Функции CRT, которые не поддерживаются в приложениях универсальной платформы Windows.

Синтаксис

int _mbsnbcoll(
   const unsigned char *string1,
   const unsigned char *string2,
   size_t count
);
int _mbsnbcoll_l(
   const unsigned char *string1,
   const unsigned char *string2,
   size_t count,
   _locale_t locale
);
int _mbsnbicoll(
   const unsigned char *string1,
   const unsigned char *string2,
   size_t count
);
int _mbsnbicoll_l(
   const unsigned char *string1,
   const unsigned char *string2,
   size_t count,
   _locale_t locale
);

Параметры

string1, string2
Строки для сравнения.

count
Число сравниваемых байтов.

locale
Используемый языковой стандарт.

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

Возвращаемое значение отражает взаимосвязь подстрок string1 и string2.

Возвращаемое значение Description
< 0 Подстрока string1 меньше, чем подстрока string2.
0 Подстрока string1 идентична подстроке string2.
> 0 Подстрока string1 больше, чем подстрока string2.

Если string1 или string2 больше NULLcount или больше INT_MAX, вызывается обработчик недопустимых параметров, как описано в разделе проверки параметров. Если продолжение выполнения разрешено, эти функции возвращают _NLSCMPERROR и устанавливают для errno значение EINVAL. Чтобы использовать функцию _NLSCMPERROR, включите String.h или Mbstring.h.

Замечания

Каждая из этих функций сравнивает максимум count первых байтов в string1 и string2, после чего возвращает значение, указывающее на отношение между подстроками string1 и string2. Если окончательный байт в подстроке string1 или string2 является байтом свинца, он не включается в сравнение; эти функции сравнивают только полные символы в подстроках. _mbsnbicoll — не чувствительная к регистру версия _mbsnbcoll. Аналогично функциям _mbsnbcmp и _mbsnbicmp, функции _mbsnbcoll и _mbsnbicoll сравнивают две строки многобайтовых символов в соответствии с лексикографическим порядком, который задается используемой в данный момент многобайтовой кодовой страницей.

Для некоторых кодовых страниц и соответствующих наборов символов порядок символов в наборе может отличаться от лексикографического порядка символов. В языковом стандарте "C" порядок символов в наборе символов ASCII совпадает с лексографическим порядком символов. Однако, в некоторых европейских языковых стандартах, например, символ "a" (значение 0x61) предшествует символу "ä" (значение 0xE4) в кодировке, но "ä" предшествует символу "a" лексикографически. В таком случае для лексикографического сравнения строк по байтам используйте функцию _mbsnbcoll вместо _mbsnbcmp. Чтобы проверить только равенство строк, используйте функцию _mbsnbcmp.

Поскольку функции coll сопоставляют строки для лексикографического сравнения, тогда как функции cmp просто проверяют на равенство строк, функции coll гораздо медленнее, чем соответствующие версии cmp. Поэтому функции следует использовать только в том случае, coll если имеется разница между порядком набора символов и лексографическим порядком символов на текущей кодовой странице, и это различие является интересом для сравнения.

Выходное значение зависит от параметра LC_CTYPE категории языкового стандарта. Дополнительные сведения см. в разделе setlocale. Версии этих функций без суффикса _l используют текущий языковой стандарт для данного поведения, зависимого от языкового стандарта. Версии с суффиксом _l идентичны, однако они используют переданный параметр языкового стандарта. Дополнительные сведения см. в разделе Locale.

По умолчанию глобальное состояние этой функции ограничивается приложением. Чтобы изменить это поведение, см . статью "Глобальное состояние" в CRT.

Сопоставления подпрограмм универсального текста

Подпрограмма Tchar.h _UNICODE и _MBCS не определен _MBCS Определенные _UNICODE Определенные
_tcsncoll _strncoll _mbsnbcoll _wcsncoll
_tcsncoll_l _strncoll_l _mbsnbcoll_l _wcsncoll_l
_tcsnicoll _strnicoll _mbsnbicoll _wcsnicoll
_tcsnicoll_l _strnicoll_l _mbsnbicoll_l _wcsnicoll_l

Требования

Маршрут Обязательный заголовок
_mbsnbcoll <mbstring.h>
_mbsnbcoll_l <mbstring.h>
_mbsnbicoll <mbstring.h>
_mbsnbicoll_l <mbstring.h>

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

См. также

Обработка строк
_mbsnbcat, _mbsnbcat_l
_mbsnbcmp, _mbsnbcmp_l
_mbsnbicmp, _mbsnbicmp_l
Функции strcoll
strncmp, wcsncmp, _mbsncmp, _mbsncmp_l
_strnicmp, _wcsnicmp, _mbsnicmp, _strnicmp_l, _wcsnicmp_l, _mbsnicmp_l