Funções strcoll
Cada uma das funções strcoll
e wcscoll
compara duas cadeias de caracteres de acordo com a configuração da categoria LC_COLLATE
da página de código de localidade em uso no momento. Cada uma das funções _mbscoll
compara duas cadeias de caracteres de acordo com a página de código multibyte em uso no momento. Use as coll
funções para comparações de cadeia de caracteres quando houver uma diferença entre a ordem do conjunto de caracteres e a ordem dos caracteres lexicográficos na página de código atual se a diferença for de interesse para a comparação. Use as funções cmp
correspondentes para testar apenas para igualdade de cadeia de caracteres.
Funções strcoll
SBCS | Unicode | MBCS | Descrição |
---|---|---|---|
strcoll |
wcscoll |
_mbscoll |
Agrupar duas cadeias de caracteres |
_stricoll |
_wcsicoll |
_mbsicoll |
Agrupar duas cadeias de caracteres (não diferencia maiúsculas de minúsculas) |
_strncoll |
_wcsncoll |
_mbsncoll |
Agrupar primeiro caracteres count de duas cadeias de caracteres |
_strnicoll |
_wcsnicoll |
_mbsnicoll |
Agrupar primeiro caracteres count de duas cadeias de caracteres (não diferencia maiúsculas de minúsculas) |
Comentários
As versões de caracteres de um byte (SBCS) dessas funções (strcoll
, stricoll
, _strncoll
e _strnicoll
) comparam string1
e string2
de acordo com a configuração da categoria LC_COLLATE
da localidade atual. Essas funções diferem das funções strcmp
correspondentes onde as funções strcoll
usam informações de página de código de localidade que fornecem sequências de agrupamento. Para comparações de cadeia de caracteres em localidades em que a ordem de conjunto de caracteres e a ordem lexicográfica de caracteres diferem, as funções strcoll
devem ser usadas em vez das funções strcmp
correspondentes. Para obter mais informações sobre LC_COLLATE
o , consulte setlocale
.
Para algumas páginas de código e conjuntos de caracteres correspondentes, a ordem dos caracteres no conjunto de caracteres pode diferir da ordem lexicográfica de caracteres. Na localidade "C", não é o caso: a ordem dos caracteres no conjunto de caracteres ASCII é a mesma que a ordem lexicográfica dos caracteres. No entanto, em algumas páginas de código europeias, por exemplo, o caractere “a” (valor 0x61) precede o caractere “ä” (valor 0xE4) no conjunto de caracteres, mas o caractere “ä” precede a caractere “a” lexicograficamente. Para realizar uma comparação lexicográfica nessa instância, use strcoll
em vez de strcmp
. Como alternativa, você pode usar strxfrm
nas cadeias de caracteres originais e, então, usar strcmp
nas cadeias de caracteres resultantes.
strcoll
, stricoll
, _strncoll
e _strnicoll
tratam automaticamente das cadeias de caracteres multibyte de acordo com a página de código de localidade atualmente em uso, assim como suas contrapartes de caractere largo (Unicode). As versões de caracteres multibyte (MBCS) dessas funções, no entanto, agrupam de cadeias de caracteres em cada caractere, de acordo com a página de código multibyte em uso no momento.
Como as funções coll
agrupam as cadeias de caracteres lexicograficamente para comparação, enquanto as funções cmp
simplesmente testam a igualdade da cadeia de caracteres, as funções coll
são muito mais lentas do que as versões cmp
correspondentes. Portanto, as coll
funções devem ser usadas somente quando houver uma diferença entre a ordem do conjunto de caracteres e a ordem dos caracteres lexicográficos na página de código atual e essa diferença for de interesse para a comparação de strings.
Confira também
Localidade
Manipulação de cadeia de caracteres
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