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_COLLATEo , 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