使用特定于区域设置的信息比较字符串。

重要

_mbsnicoll_mbsnicoll_l 无法用于在 Windows 运行时中执行的应用程序。 有关详细信息,请参阅通用 Windows 平台应用中不支持的 CRT 函数

语法

int _strnicoll(
   const char *string1,
   const char *string2,
   size_t count
);
int _wcsnicoll(
   const wchar_t *string1,
   const wchar_t *string2 ,
   size_t count
);
int _mbsnicoll(
   const unsigned char *string1,
   const unsigned char *string2,
   size_t count
);
int _strnicoll_l(
   const char *string1,
   const char *string2,
   size_t count,
   _locale_t locale
);
int _wcsnicoll_l(
   const wchar_t *string1,
   const wchar_t *string2 ,
   size_t count,
   _locale_t locale
);
int _mbsnicoll_l(
   const unsigned char *string1,
   const unsigned char *string2,
   size_t count,
   _locale_t locale
);

参数

%>
要比较的 null 终止的字符串

count
要比较的字符数

locale
要使用的区域设置。

返回值

其中每个函数均返回一个指示 string1string2 的子字符串之间关系的值,如下所示。

返回值 string1 与 string2 的关系
< 0 string1 小于 string2
0 string1 等于 string2
> 0 string1 大于 string2

其中每个函数都会返回 _NLSCMPERROR。 若要使用 _NLSCMPERROR,请包括 STRING.H 或 MBSTRING.H。 如果 string1string2 包含排序序列域外部的宽字符代码,则 _wcsnicoll 会失败。 发生错误时,_wcsnicoll 可能会将 errno 设置为 EINVAL。 若要检查有关调用 _wcsnicoll 的错误,请将 errno 设置为 0,然后在调用 _wcsnicoll 后检查 errno

备注

其中每个函数根据代码页对 string1string2 中的前 count 个字符进行不区分大小写的比较。 仅当在代码页中的字符集顺序与字典字符顺序之间存在差异,并且此差异对于字符串比较有关系时,才应使用这些函数。 不带 _l 后缀的函数的版本使用当前区域设置和代码页。 带 _l 后缀的版本是相同的,只不过它们转而使用传入的区域设置。 有关详细信息,请参阅 Locale

所有这些函数都验证其参数。 如果 string1string2 为空指针,或者如果计数大于 INT_MAX,则调用无效的参数处理程序,如参数验证中所述。 如果允许执行继续,则这些函数将返回 _NLSCMPERROR 并将 errno 设置为 EINVAL

默认情况下,此函数的全局状态范围限定为应用程序。 若要更改此行为,请参阅 CRT 中的全局状态

一般文本例程映射

TCHAR.H 例程 _UNICODE_MBCS 未定义 _MBCS 已定义 _UNICODE 已定义
_tcsncicoll _strnicoll _mbsnbicoll _wcsnicoll
_tcsnicoll _strnicoll _mbsnbicoll _wcsnicoll
_tcsnicoll_l _strnicoll_l _mbsnbicoll_l _wcsnicoll_l

要求

例程 必需的标头
%> <string.h>
%> <wchar.h> 或 <string.h>
%> <mbstring.h>

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

另请参阅

区域设置
字符串操作
strcoll 函数
localeconv

%>
.- .