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
_strnicmp_l
_mbsnicmp
_wcsnicmp_l
,_mbsnicmp_l
strxfrm
, , wcsxfrm
_strxfrm_l
_wcsxfrm_l