strcollФункции

Каждая из функций strcoll и wcscoll сравнивает две строки согласно параметру категории LC_COLLATE кодовой страницы использующегося языкового стандарта. Каждая из функций _mbscoll сравнивает две строки в соответствии с использующейся многобайтовой кодовой страницей. coll Используйте функции для сравнения строк, если существует разница между порядком набора символов и порядком лексографических символов на текущей кодовой странице, если разница интересна для сравнения. Используйте соответствующие функции cmp для выполнения проверки только на равенство строк.

Функции strcoll

SBCS (single-byte character set, однобайтовый набор символов) Unicode MBCS Description
strcoll wcscoll _mbscoll Сопоставить две строки
_stricoll _wcsicoll _mbsicoll Сопоставить две строки (регистр не учитывается)
_strncoll _wcsncoll _mbsncoll Сопоставить первые count символов двух строк
_strnicoll _wcsnicoll _mbsnicoll Сопоставить первые count символов двух строк (регистр не учитывается)

Замечания

Версии этих функций для однобайтовых символов (SBCS) (strcoll, stricoll, _strncoll и _strnicoll) сравнивают string1 и string2 согласно параметру категории LC_COLLATE текущего языкового стандарта. Эти функции отличаются от соответствующих функций strcmp тем, что функции strcoll используют сведения кодовой страницы языкового стандарта, предоставляющие последовательности сопоставления. Для сравнения строк в языковых стандартах, где порядок символов в наборе отличается от лексикографического порядка, функции strcoll необходимо использовать вместо соответствующих функций strcmp. Дополнительные сведения о методе LC_COLLATE см. в разделе setlocale.

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

strcoll, stricoll, _strncoll и _strnicoll автоматически обрабатывают строки многобайтовых символов в соответствии с текущей кодовой страницей языкового стандарта, так же ведут себя их аналоги, работающие с расширенными (Юникод) символами. Версии этих функций, работающие с многобайтовыми символами (MBCS), однако, сопоставляют строки посимвольно согласно текущей многобайтовой кодовой странице.

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

См. также

Локаль
Обработка строк
localeconv
_mbsnbcoll, _mbsnbcoll_l, _mbsnbicoll, _mbsnbicoll_l
setlocale, _wsetlocale
strcmp, wcscmp, _mbscmp
strncmp, wcsncmp, _mbsncmp, _mbsncmp_l
_strnicmp, _wcsnicmp, _mbsnicmp, _strnicmp_l, _wcsnicmp_l, _mbsnicmp_l
strxfrm, wcsxfrm, _strxfrm_l, _wcsxfrm_l