使用特定于区域设置的信息比较字符串。
重要
_mbsicoll
和 _mbsicoll_l
无法用于在 Windows 运行时中执行的应用程序。 有关详细信息,请参阅通用 Windows 平台应用中不支持的 CRT 函数。
语法
int _stricoll(
const char *string1,
const char *string2
);
int _wcsicoll(
const wchar_t *string1,
const wchar_t *string2
);
int _mbsicoll(
const unsigned char *string1,
const unsigned char *string2
);
int _stricoll_l(
const char *string1,
const char *string2,
_locale_t locale
);
int _wcsicoll_l(
const wchar_t *string1,
const wchar_t *string2,
_locale_t locale
);
int _mbsicoll_l(
const unsigned char *string1,
const unsigned char *string2,
_locale_t locale
);
参数
%>
要比较的 null 终止的字符串。
locale
要使用的区域设置。
返回值
其中每个函数均返回一个指示 string1
与 string2
之间关系的值,如下所示。
返回值 | string1 和 string2 的关系 |
---|---|
< 0 | string1 小于 string2 |
0 | string1 等于 string2 |
> 0 | string1 大于 string2 |
_NLSCMPERROR |
出现了错误。 |
其中每个函数都会返回 _NLSCMPERROR
。 若要使用 _NLSCMPERROR
,请包括 <string.h> 或 <mbstring.h>。 如果 string1
或 string2
包含排序序列域外部的宽字符代码,则 _wcsicoll
会失败。 发生错误时,_wcsicoll
可能会将 errno
设置为 EINVAL
。 若要检查有关调用 _wcsicoll
的错误,请将 errno
设置为 0,然后在调用 _wcsicoll
后检查 errno
。
注解
其中每个函数根据当前使用的代码页对 string1
和 string2
进行不区分大小写比较。 仅在当前代码页中的字符集顺序与字典字符顺序之间存在差异,并且此差异对于字符串比较有关系时,才应使用这些函数。
_stricmp
与 _stricoll
的不同之处在于,_stricmp
比较受 LC_CTYPE
的影响,而 _stricoll
的比较根据区域设置的 LC_CTYPE
和 LC_COLLATE
类别进行。 有关 LC_COLLATE
类别的详细信息,请参阅 setlocale
和区域设置类别。 这些不带 _l
后缀的函数的版本使用当前区域设置;带有 _l
后缀的版本相同,只不过它们使用传递的区域设置。 有关详细信息,请参阅 Locale。
所有这些函数都验证其参数。 如果 string1
或 string2
是 NULL
指针,则调用无效的参数处理程序,如参数验证中所述。 如果允许执行继续,则这些函数将返回 _NLSCMPERROR
并将 errno
设置为 EINVAL
。
默认情况下,此函数的全局状态范围限定为应用程序。 若要更改此行为,请参阅 CRT 中的全局状态。
一般文本例程映射
TCHAR.H 例程 | _UNICODE 和 _MBCS 未定义 |
_MBCS 已定义 |
_UNICODE 已定义 |
---|---|---|---|
_tcsicoll |
_stricoll |
_mbsicoll |
_wcsicoll |
要求
例程 | 必需的标头 |
---|---|
%> | <string.h> |
%> | <wchar.h>、<string.h> |
%> | <mbstring.h> |
有关兼容性的详细信息,请参阅 兼容性。
另请参阅
区域设置
字符串操作
strcoll
函数
localeconv
%>
.- .