使用多字节代码页信息比较两个多字节字符串的 n
字节。
重要
此 API 不能用于在 Windows 运行时中执行的应用程序。 有关详细信息,请参阅通用 Windows 平台应用中不支持的 CRT 函数。
语法
int _mbsnbcoll(
const unsigned char *string1,
const unsigned char *string2,
size_t count
);
int _mbsnbcoll_l(
const unsigned char *string1,
const unsigned char *string2,
size_t count,
_locale_t locale
);
int _mbsnbicoll(
const unsigned char *string1,
const unsigned char *string2,
size_t count
);
int _mbsnbicoll_l(
const unsigned char *string1,
const unsigned char *string2,
size_t count,
_locale_t locale
);
参数
%>
要比较的字符串。
count
要比较的字节数。
locale
要使用的区域设置。
返回值
返回值指示 string1
和 string2
的子字符串之间的关系。
返回值 | 说明 |
---|---|
< 0 | string1 子字符串小于 string2 子字符串。 |
0 | string1 子字符串等于 string2 子字符串。 |
> 0 | string1 子字符串大于 string2 子字符串。 |
如果 string1
或 string2
为 NULL
,或者 count
大于 INT_MAX
,则会调用无效的参数处理程序,如参数验证中所述。 如果允许执行继续,则这些函数将返回 _NLSCMPERROR
并将 errno
设置为 EINVAL
。 若要使用 _NLSCMPERROR
,请包括 STRING.H 或 MBSTRING.H。
备注
每一个函数最多整理 string1
和 string2
中的前 count
个字节,并返回一个指示 string1
和 string2
的生成子字符串之间关系的值。 如果 string1
或 string2
的子字符串中的最后一个字节是前导字节,则比较中不会包含它,这些函数仅比较子字符串中的完整字符。 _mbsnbicoll
是 _mbsnbcoll
的不区分大小写版本。 与 _mbsnbcmp
和 _mbsnbicmp
相同,_mbsnbcoll
和 _mbsnbicoll
根据当前使用的多字节代码页指定的字典顺序整理两个多字节字符串。
对于一些代码页和对应的字符集,字符集中的字符顺序可能与字典的字符顺序不同。 在“C”区域设置中,ASCII 字符集中的字符顺序与字典的字符顺序相同。 但是,在某些欧洲代码页中,例如,字符“a”(值 0x61)位于字符“ä”(值 0xE4)之前,但在字典顺序中,字符“ä”位于字符“a”之前。 在这种情况下若要按字节数执行字符串字典顺序比较,则使用 _mbsnbcoll
,而非 _mbsnbcmp
;若只检查字符串对等性,则使用 _mbsnbcmp
。
由于 coll
函数按字典顺序整理字符串以进行比较,而 cmp
函数仅测试字符串对等性,因此 coll
函数速度比相应的 cmp
版本慢得多。 因此,应仅在以下情况下使用 coll
函数:当前代码页中的字符集顺序和字典字符顺序存在差异,以及此差异对于比较很有用。
输出值受区域设置的 LC_CTYPE
类别设置的影响。 有关详细信息,请参阅 setlocale
。 这些不带 _l
后缀的函数的版本使用为该区域设置相关的行为的当前区域设置;带有 _l
后缀的版本相同,只不过它们使用传递的区域设置参数。 有关详细信息,请参阅 Locale。
默认情况下,此函数的全局状态范围限定为应用程序。 若要更改此行为,请参阅 CRT 中的全局状态。
一般文本例程映射
Tchar.h 例程 | _UNICODE 和 _MBCS 未定义 |
_MBCS 已定义 |
_UNICODE 已定义 |
---|---|---|---|
_tcsncoll |
_strncoll |
_mbsnbcoll |
_wcsncoll |
_tcsncoll_l |
_strncoll_l |
_mbsnbcoll_l |
_wcsncoll_l |
_tcsnicoll |
_strnicoll |
_mbsnbicoll |
_wcsnicoll |
_tcsnicoll_l |
_strnicoll_l |
_mbsnbicoll_l |
_wcsnicoll_l |
要求
例程 | 必需的标头 |
---|---|
_mbsnbcoll |
<mbstring.h> |
_mbsnbcoll_l |
<mbstring.h> |
_mbsnbicoll |
<mbstring.h> |
_mbsnbicoll_l |
<mbstring.h> |
有关兼容性的详细信息,请参阅 兼容性。
另请参阅
字符串操作
%>
%>
%>
strcoll
函数