strcoll
函数
每个 strcoll
和 wcscoll
函数根据当前使用的区域设置代码页的 LC_COLLATE
类别设置来比较两个字符串。 每个 _mbscoll
函数根据当前使用的多字节代码页比较两个字符串。 在以下情况下使用 coll
函数进行字符串比较:当前代码页中的字符集顺序和字典字符顺序存在差异(如果此差异对于比较很有用)。 使用相应的 cmp
函数仅测试字符串相等性。
strcoll 函数
SBCS | Unicode | MBCS | 说明 |
---|---|---|---|
strcoll |
wcscoll |
_mbscoll |
排序两个字符串 |
_stricoll |
_wcsicoll |
_mbsicoll |
排序两个字符串(不区分大小写) |
_strncoll |
_wcsncoll |
_mbsncoll |
排序两个字符串的第一个 count 字符 |
_strnicoll |
_wcsnicoll |
_mbsnicoll |
排序两个字符串的第一个 count 字符(不区分大小写) |
注解
这些函数(strcoll
、stricoll
、_strncoll
和 _strnicoll
)的单字节字符 (SBCS) 版本根据当前区域设置的 LC_COLLATE
类别设置比较 string1
和 string2
。 这些函数与相应的 strcmp
函数不同,因为 strcoll
函数使用提供排序序列的区域设置代码页信息。 对于在字符集顺序和字典字符顺序不同的区域设置中比较字符串,应使用 strcoll
函数而不是相应的 strcmp
函数。 有关 LC_COLLATE
的详细信息,请参阅 setlocale
。
对于一些代码页和相应的字符集,字符集中的字符顺序可能与字典的字符顺序不同。 在“C”区域设置中并非如此:ASCII 字符集中的字符顺序与字典的字符顺序相同。 但是,在某些欧洲代码页中,例如,字符“a”(值 0x61)位于字符“ä”(值 0xE4)之前,但在字典顺序中,字符“ä”位于字符“a”之前。 要在这种实例中执行字典比较,请使用 strcoll
而不是 strcmp
。 或者,也可以对原始字符串使用 strxfrm
,然后对结果字符串使用 strcmp
。
strcoll
、stricoll
、_strncoll
和 _strnicoll
根据当前使用的区域设置代码页自动处理多字节字符串,如同处理其对应的宽字符 (Unicode) 部分一样。 然而,这些函数的多字节 (MBCS) 版本根据当前使用的多字节代码页以字符为基础排序字符串。
由于 coll
函数按字典顺序整理字符串以进行比较,而 cmp
函数仅测试字符串对等性,因此 coll
函数速度比相应的 cmp
版本慢得多。 因此,应仅在以下情况下使用 coll
函数:当前代码页中的字符集顺序和字典字符顺序存在差异,以及此差异对于字符串比较很有用。
另请参阅
区域设置
字符串操作
localeconv
%>
.- .