strcoll 函数

每个 strcollwcscoll 函数根据当前使用的区域设置代码页的 LC_COLLATE 类别设置来比较两个字符串。 每个 _mbscoll 函数根据当前使用的多字节代码页比较两个字符串。 在以下情况下使用 coll 函数进行字符串比较:当前代码页中的字符集顺序和字典字符顺序存在差异(如果此差异对于比较很有用)。 使用相应的 cmp 函数仅测试字符串相等性。

strcoll 函数

SBCS Unicode MBCS 说明
strcoll wcscoll _mbscoll 排序两个字符串
_stricoll _wcsicoll _mbsicoll 排序两个字符串(不区分大小写)
_strncoll _wcsncoll _mbsncoll 排序两个字符串的第一个 count 字符
_strnicoll _wcsnicoll _mbsnicoll 排序两个字符串的第一个 count 字符(不区分大小写)

注解

这些函数(strcollstricoll_strncoll_strnicoll)的单字节字符 (SBCS) 版本根据当前区域设置的 LC_COLLATE 类别设置比较 string1string2。 这些函数与相应的 strcmp 函数不同,因为 strcoll 函数使用提供排序序列的区域设置代码页信息。 对于在字符集顺序和字典字符顺序不同的区域设置中比较字符串,应使用 strcoll 函数而不是相应的 strcmp 函数。 有关 LC_COLLATE 的详细信息,请参阅 setlocale

对于一些代码页和相应的字符集,字符集中的字符顺序可能与字典的字符顺序不同。 在“C”区域设置中并非如此:ASCII 字符集中的字符顺序与字典的字符顺序相同。 但是,在某些欧洲代码页中,例如,字符“a”(值 0x61)位于字符“ä”(值 0xE4)之前,但在字典顺序中,字符“ä”位于字符“a”之前。 要在这种实例中执行字典比较,请使用 strcoll 而不是 strcmp。 或者,也可以对原始字符串使用 strxfrm,然后对结果字符串使用 strcmp

strcollstricoll_strncoll_strnicoll 根据当前使用的区域设置代码页自动处理多字节字符串,如同处理其对应的宽字符 (Unicode) 部分一样。 然而,这些函数的多字节 (MBCS) 版本根据当前使用的多字节代码页以字符为基础排序字符串。

由于 coll 函数按字典顺序整理字符串以进行比较,而 cmp 函数仅测试字符串对等性,因此 coll 函数速度比相应的 cmp 版本慢得多。 因此,应仅在以下情况下使用 coll 函数:当前代码页中的字符集顺序和字典字符顺序存在差异,以及此差异对于字符串比较很有用。

另请参阅

区域设置
字符串操作
localeconv
_mbsnbcoll_mbsnbcoll_l_mbsnbicoll_mbsnbicoll_l
setlocale_wsetlocale
strcmpwcscmp_mbscmp
strncmpwcsncmp_mbsncmp_mbsncmp_l
_strnicmp_wcsnicmp_mbsnicmp_strnicmp_l_wcsnicmp_l_mbsnicmp_l
strxfrmwcsxfrm_strxfrm_l_wcsxfrm_l