strcoll
, funkcje
Każda z strcoll
funkcji i wcscoll
porównuje dwa ciągi zgodnie z LC_COLLATE
ustawieniem kategorii aktualnie używanej strony kodowej ustawień regionalnych. Każda z _mbscoll
funkcji porównuje dwa ciągi zgodnie ze stroną kodową wielobajtową, która jest obecnie używana. coll
Użyj funkcji dla porównań ciągów, gdy istnieje różnica między kolejnością zestawu znaków a kolejnością znaków leksykograficznej na bieżącej stronie kodowej, jeśli różnica jest interesująca dla porównania. Użyj odpowiednich cmp
funkcji, aby przetestować tylko pod kątem równości ciągów.
strcoll — Funkcje
SBCS | Unicode | MBCS | opis |
---|---|---|---|
strcoll |
wcscoll |
_mbscoll |
Sortowanie dwóch ciągów |
_stricoll |
_wcsicoll |
_mbsicoll |
Sortowanie dwóch ciągów (bez uwzględniania wielkości liter) |
_strncoll |
_wcsncoll |
_mbsncoll |
Sortowanie pierwszych count znaków dwóch ciągów |
_strnicoll |
_wcsnicoll |
_mbsnicoll |
Sortowanie pierwszych count znaków dwóch ciągów (bez uwzględniania wielkości liter) |
Uwagi
Wersje tych funkcji (SBCS) z pojedynczym bajtem (strcoll
, stricoll
, _strncoll
i _strnicoll
) porównują string1
i string2
zgodnie z LC_COLLATE
ustawieniem kategorii bieżących ustawień regionalnych. Te funkcje różnią się od odpowiednich strcmp
funkcji, w których strcoll
funkcje używają informacji o stronie kodu ustawień regionalnych, które udostępniają sekwencje sortowania. W przypadku porównań ciągów w ustawieniach regionalnych, w których kolejność zestawu znaków i kolejność znaków leksykograficznej różnią się, strcoll
należy używać funkcji zamiast odpowiednich strcmp
funkcji. Aby uzyskać więcej informacji na temat LC_COLLATE
programu , zobacz setlocale
.
W przypadku niektórych stron kodowych i odpowiadających im zestawów znaków kolejność znaków w zestawie znaków może różnić się od kolejności znaków leksykograficznej. W ustawieniach regionalnych "C" nie jest tak: kolejność znaków w zestawie znaków ASCII jest taka sama jak kolejność znaków leksykograficznej znaków. Jednak na niektórych stronach kodu europejskiego, na przykład znak "a" (wartość 0x61) poprzedza znak "ä" (wartość 0xE4) w zestawie znaków, ale znak "ä" poprzedza znak "a" leksykograficznie. Aby wykonać porównanie leksykograficzne w takim wystąpieniu, należy użyć strcoll
zamiast strcmp
. Alternatywnie można użyć strxfrm
w oryginalnych ciągach, a następnie użyć strcmp
w ciągach wynikowych.
strcoll
, , stricoll
_strncoll
i _strnicoll
automatycznie obsługują ciągi wielobajtowe według aktualnie używanej strony kodowej ustawień regionalnych, podobnie jak ich odpowiedniki z szerokim znakiem (Unicode). Wersje wielobajtowego znaku (MBCS) tych funkcji, jednak sortują ciągi na podstawie znaków zgodnie ze stroną kodową wielobajtową, która jest obecnie używana.
coll
Ponieważ funkcje sortują ciągi leksykograficznie w celu porównania, podczas gdy cmp
funkcje po prostu testują równość ciągów, coll
funkcje są znacznie wolniejsze niż odpowiednie cmp
wersje. W związku z tym funkcje powinny być używane tylko wtedy, coll
gdy istnieje różnica między kolejnością zestawu znaków a kolejnością znaków leksykograficznej na bieżącej stronie kodowej, a ta różnica jest interesująca dla porównania ciągów.
Zobacz też
ustawienia regionalne
Manipulowanie ciągami
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