strcoll, wcscoll, _mbscoll, _strcoll_l, _wcscoll_l, _mbscoll_l
使用当前区域设置或指定的 LC_CTYPE 转换状态类别,比较字符串。
重要
_mbscoll 和 _mbscoll_l 不能在运行时的窗口执行的应用程序。有关更多信息,请参见 CRT 函数不支持与 /ZW。
int strcoll(
const char *string1,
const char *string2
);
int wcscoll(
const wchar_t *string1,
const wchar_t *string2
);
int _mbscoll(
const unsigned char *string1,
const unsigned char *string2
);
int _strcoll_l(
const char *string1,
const char *string2,
_locale_t locale
);
int wcscoll_l(
const wchar_t *string1,
const wchar_t *string2,
_locale_t locale
);
int _mbscoll_l(
const unsigned char *string1,
const unsigned char *string2,
_locale_t locale
);
参数
string1, string2
比较的 null 终止的字符串。locale
使用的区域设置。
返回值
这些函数都返回一个指示 string1 的关系值设置为 string2*,* 如下所示。
返回值 |
string1 关系 string2 |
---|---|
< 0 |
string1 小于 string2 |
0 |
string1 与 string2 |
> 0 |
string1 大于 string2 |
这些函数都返回一个在错误的 _NLSCMPERROR。 若要使用 _NLSCMPERROR,请包括 STRING.H 或 MBSTRING.H。 如果 string1 或 string2 为 NULL 或包含在该排序的序列的字段之外,宽字符代码wcscoll 会失败。 发生错误时,wcscoll 可以设置 errno 到 EINVAL。 若要检查调用一个错误。wcscoll,请设置 errno 到 0 在调用 wcscoll然后检查 errno。
备注
这些功能中的每一个基于当前正在使用的代码页执行 string1 和 string2 一个区分大小写的比较。 应使用这些功能,只有 + 当对字符集命令时和字典字符序列当前代码页和差异之间的区别是字符串比较的利益。
所有这些函数验证其参数。 如果 string1 或 string2 是 null 指针,或者,如果 count 比 INT_MAX大,无效参数调用处理程序,如 参数验证 所述。 如果执行允许继续,这些函数返回 _NLSCMPERROR 并将 errno 到 EINVAL。
因为每个区域设置具有排序的字符,不同的规则两个字符串的比较与区域设置相关的操作。 这些功能的版本不 _l 后缀为该区域设置相关的行为将使用与当前线程区域设置;与 _l 后缀的版本与对应的功能相同的类,但它们用作参数传递的区域设置而不是当前区域设置。 有关更多信息,请参见区域设置。
一般文本例程映射
TCHAR.H 实例 |
未定义的_UNICODE & _MBCS |
定义的_MBCS |
定义的_UNICODE |
---|---|---|---|
_tcscoll |
strcoll |
_mbscoll |
wcscoll |
要求
实例 |
必需的标头 |
---|---|
strcoll |
<string.h> |
wcscoll |
<wchar.h>,<string.h> |
_mbscoll, _mbscoll_l |
<mbstring.h> |
_strcoll_l |
<string.h> |
_wcscoll_l |
<wchar.h>,<string.h> |
有关其他的兼容性信息,请参见中介绍的 兼容性。
.NET Framework 等效项
请参见
参考
_mbsnbcoll, _mbsnbcoll_l, _mbsnbicoll, _mbsnbicoll_l
_stricmp, _wcsicmp, _mbsicmp, _stricmp_l, _wcsicmp_l, _mbsicmp_l
strncmp, wcsncmp, _mbsncmp, _mbsncmp_l
_strnicmp, _wcsnicmp, _mbsnicmp, _strnicmp_l, _wcsnicmp_l, _mbsnicmp_l