_stricmp, _wcsicmp, _mbsicmp, _stricmp_l, _wcsicmp_l, _mbsicmp_l

执行字符串一个例比较。

重要

_mbsicmp 和 _mbsicmp_l 不能在运行时的窗口执行的应用程序。有关更多信息,请参见 CRT 函数不支持与 /ZW

int _stricmp(
   const char *string1,
   const char *string2 
);
int _wcsicmp(
   const wchar_t *string1,
   const wchar_t *string2 
);
int _mbsicmp(
   const unsigned char *string1,
   const unsigned char *string2 
);
int _stricmp_l(
   const char *string1,
   const char *string2,
   _locale_t locale
);
int _wcsicmp_l(
   const wchar_t *string1,
   const wchar_t *string2,
   _locale_t locale
);
int _mbsicmp_l(
   const unsigned char *string1,
   const unsigned char *string2,
   _locale_t locale
);

参数

  • string1, string2
    比较的 null 终止的字符串。

  • locale
    使用的区域设置。

返回值

返回值如下指示 string1 的关系。string2。

返回值

描述

< 0

string1 小于 string2

0

string1 与 string2

> 0

string1 大于 string2

在错误,_mbsicmp 返回 _NLSCMPERROR,在 STRING.H 和 MBSTRING.H. 定义。

备注

_stricmp功能字典地比较 string1 和 string2 的小写版本并返回指示它们之间的关系的值。 _stricmp与 _stricoll的不同之处在于 _stricmp比较受 LC_CTYPE的影响,而 _stricoll比较是基于区域设置的 LC_CTYPE和 LC_COLLATE类别。 有关 LC_COLLATE类别的更多信息,请参见 setlocale区域设置类别。 这些功能的版本不 _l 后缀的区域设置相关的行为使用当前区域设置。 与后缀的版本相同,只不过它们使用的区域设置。 有关更多信息,请参见区域设置

备注

_stricmp 与 _strcmpi 相等。可互换使用它们,但 _stricmp 是首选标准。

_strcmpi功能与 _stricmp等效以及仅用于向后兼容提供。

由于 stricmp 执行例比较,这可能导致意外行为。

若要声明由 stricmp 的大小写转换时影响比较的结果,假定,您有两个字符串 johnston 和 JOHN_HENRY。 因为“_”比例 S.,的值较低 ASCII 该字符串 JOHN_HENRY 比 johnston 将被视为较少。 实际上,在 91 之间的一个 ASCII 值,而 96 比任何字母都将被视为较少的任意字符。

如果 strcmp 函数使用而不是 stricmp,JOHN_HENRY 比 johnston 大。

_wcsicmp 和 _mbsicmp 是 _stricmp的宽字符和多字节字符版本。 参数和返回 _wcsicmp 的值是宽字符字符串;这些 _mbsicmp 的多字节字符字符串。 _mbsicmp 根据当前多字节代码页识别多字节字符序列并返回该错误的 _NLSCMPERROR。 (有关更多信息,请参见 代码页。)这三个功能否则具有相同的行为。

_wcsicmp 和 wcscmp 具有相同的行为,但 wcscmp 不将其参数转换为小写。比较之前。 _mbsicmp 和 _mbscmp 具有相同的行为,但 _mbscmp 不将其参数转换为小写。比较之前。

您将需要调用 _wcsicmp 的 setlocale 可以将拉丁字符 1 一起使用。 默认情况下 C 区域设置实际上是,因此,例如,ä 与 Ä 不相等。 调用与所有区域设置中的 setlocale 除了 C 区域设置之外在调用之前对 _wcsicmp。 下面的示例演示 _wcsicmp如何区域设置区分大小:

// crt_stricmp_locale.c
#include <string.h>
#include <stdio.h>
#include <locale.h>

int main() {
   setlocale(LC_ALL,"C");   // in effect by default
   printf("\n%d",_wcsicmp(L"ä", L"Ä"));   // compare fails
   setlocale(LC_ALL,"");
   printf("\n%d",_wcsicmp(L"ä", L"Ä"));   // compare succeeds
}

另一种方法是调用 _create_locale、_wcreate_locale 并将返回的区域设置对象作为参数传递给 _wcsicmp_l。

所有这些函数验证其参数。 如果 string1 或 string2 是 NULL 指针,无效参数调用处理程序,如 参数验证 所述。 如果执行允许继续,这些函数返回 _NLSCMPERROR 并将 errno 到 EINVAL。

一般文本例程映射

TCHAR.H 实例

未定义的_UNICODE & _MBCS

定义的_MBCS

定义的_UNICODE

_tcsicmp

_stricmp

_mbsicmp

_wcsicmp

要求

实例

必需的标头

_stricmp, _stricmp_l

<string.h>

_wcsicmp, _wcsicmp_l

<string.h> 或 <wchar.h>

_mbsicmp, _mbsicmp_l

<mbstring.h>

有关其他的兼容性信息,请参见中介绍的 兼容性

示例

// crt_stricmp.c

#include <string.h>
#include <stdio.h>
#include <stdlib.h>

char string1[] = "The quick brown dog jumps over the lazy fox";
char string2[] = "The QUICK brown dog jumps over the lazy fox";

int main( void )
{
   char tmp[20];
   int result;

   // Case sensitive
   printf( "Compare strings:\n   %s\n   %s\n\n", string1, string2 );
   result = strcmp( string1, string2 );
   if( result > 0 )
      strcpy_s( tmp, _countof(tmp), "greater than" );
   else if( result < 0 )
      strcpy_s( tmp, _countof(tmp), "less than" );
   else
      strcpy_s( tmp, _countof(tmp), "equal to" );
   printf( "   strcmp:   String 1 is %s string 2\n", tmp );

   // Case insensitive (could use equivalent _stricmp)
   result = _stricmp( string1, string2 );
   if( result > 0 )
      strcpy_s( tmp, _countof(tmp), "greater than" );
   else if( result < 0 )
      strcpy_s( tmp, _countof(tmp), "less than" );
   else
      strcpy_s( tmp, _countof(tmp), "equal to" );
   printf( "   _stricmp:  String 1 is %s string 2\n", tmp );
}
  

.NET Framework 等效项

System::String::Compare

请参见

参考

字符串操作(crt)

memcmp, wmemcmp

_memicmp, _memicmp_l

strcmp, wcscmp, _mbscmp

strcoll功能

strncmp, wcsncmp, _mbsncmp, _mbsncmp_l

_strnicmp, _wcsnicmp, _mbsnicmp, _strnicmp_l, _wcsnicmp_l, _mbsnicmp_l

strrchr, wcsrchr, _mbsrchr, _mbsrchr_l

_strset, _strset_l, _wcsset, _wcsset_l, _mbsset, _mbsset_l

strspn, wcsspn, _mbsspn, _mbsspn_l