_mbsnbcoll, _mbsnbcoll_l, _mbsnbicoll, _mbsnbicoll_l

使用多字节代码页信息比较两个多字节字符串的 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
);

参数

string1string2
要比较的字符串。

count
要比较的字节数。

locale
要使用的区域设置。

返回值

返回值指示 string1string2 的子字符串之间的关系。

返回值 说明
< 0 string1 子字符串小于 string2 子字符串。
0 string1 子字符串等于 string2 子字符串。
> 0 string1 子字符串大于 string2 子字符串。

如果 string1string2NULL,或者 count 大于 INT_MAX,则会调用无效的参数处理程序,如参数验证中所述。 如果允许执行继续,则这些函数将返回 _NLSCMPERROR 并将 errno 设置为 EINVAL。 若要使用 _NLSCMPERROR,请包括 STRING.H 或 MBSTRING.H。

备注

每一个函数最多整理 string1string2 中的前 count 个字节,并返回一个指示 string1string2 的生成子字符串之间关系的值。 如果 string1string2 的子字符串中的最后一个字节是前导字节,则比较中不会包含它,这些函数仅比较子字符串中的完整字符。 _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>

有关兼容性的详细信息,请参阅 兼容性

另请参阅

字符串操作
_mbsnbcat_mbsnbcat_l
_mbsnbcmp_mbsnbcmp_l
_mbsnbicmp_mbsnbicmp_l
strcoll 函数
strncmpwcsncmp_mbsncmp_mbsncmp_l
_strnicmp_wcsnicmp_mbsnicmp_strnicmp_l_wcsnicmp_l_mbsnicmp_l