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


Функции strcoll

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

Функции strcoll

однобайтовая кодировка

Юникод

MBCS

Описание

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 следует использовать только в том случае, когда есть различие между порядком символов в наборе и лексикографическим порядке символов в текущей кодовой странице и данное различие представляет интерес во время сравнения строк.

См. также

Ссылки

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

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

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