Sdílet prostřednictvím


_stricmp, _wcsicmp, _mbsicmp, _stricmp_l, _wcsicmp_l, _mbsicmp_l

Provádí velká a malá písmena porovnání řetězců.

Důležitá poznámkaDůležité

_mbsicmpa _mbsicmp_l nelze použít v aplikacích, které jsou spuštěny v běhovém prostředí systému Windows.Další informace naleznete v tématu CRT funkce nepodporované s /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
);

Parametry

  • string1, string2
    Ukončený hodnotou Null řetězce k porovnání.

  • locale
    Národní prostředí má použít.

Vrácená hodnota

Návratová hodnota udává poměr string1 k string2 následujícím způsobem.

Návratová hodnota

Popis

< 0

string1 menší než string2

0

string1 identické string2

> 0

string1 větší než string2

Na chybu _mbsicmp vrátí _NLSCMPERROR, který je definován v < string.h > a < mbstring.h >.

Poznámky

_stricmp Funkce ordinally porovná string1 a string2 po převodu každý znak na malá písmena a vrátí hodnotu, která určuje jejich relace._stricmpse liší od _stricoll v tom, _stricmp porovnání pouze ovlivněny LC_CTYPE, která určuje, které znaky jsou malá a velká písmena._stricoll Funkce porovná řetězce podle oba LC_CTYPE a LC_COLLATE kategorie národní prostředí, což zahrnuje případ a pořadí řazení.Další informace o LC_COLLATE kategorie, naleznete v části setlocale a kategorie národní prostředí.Verze pro tyto funkce bez _l přípona použít aktuální národní prostředí pro chování závislé na národní prostředí.Verze s příponou jsou identické, s tím rozdílem, že používají místo něho předán v národním prostředí.Pokud nebyla nastavena národní prostředí, je použita C národní prostředí.Další informace naleznete v tématu Národní prostředí.

[!POZNÁMKA]

_stricmp je ekvivalentem _strcmpi.Může být použit vzájemně zaměňovat, ale _stricmp je upřednostňovaný standard.

_strcmpi Funkce je ekvivalentní volání _stricmp a jsou poskytnuty pouze z důvodu zpětné kompatibility.

Protože _stricmp malá písmena porovnávání, může způsobit neočekávané chování.

Když ilustrovat případu převodu pomocí _stricmp ovlivní výsledek porovnání, předpokládat, že máte dva řetězce JOHNSTONŮV a JOHN_HENRY.JOHNSTONŮV řetězec JOHN_HENRY bude považován za méně než vzhledem k tomu, že "_" má hodnotu ASCII nižší než malá písmena S.Ve skutečnosti libovolný znak, který má hodnotu ASCII mezi 91 a 96 bude považovat za méně než na jakékoli písmeno.

Pokud strcmp funkce se používá místo _stricmp, JOHN_HENRY bude větší než JOHNSTONŮV.

_wcsicmpa _mbsicmp jsou širokého znaku a multibajtové znakové verze _stricmp.Argumenty a vrácené hodnoty _wcsicmp jsou řetězce širokého znaku; u _mbsicmp jsou multibajtové znakové řetězce._mbsicmprozpozná multibajtové znakové pořadí podle aktuální více znakovou stránku a vrátí _NLSCMPERROR na chybu.Další informace naleznete v tématu znakové stránky.Tyto tři funkce chovat stejně jako v opačném případě.

_wcsicmpa wcscmp s výjimkou těch, které se chovají stejně jako wcscmp nepřevádět argumenty na malá písmena před jejich porovnání._mbsicmpa _mbscmp s výjimkou těch, které se chovají stejně jako _mbscmp nepřevádět argumenty na malá písmena před jejich porovnání.

Je třeba volat setlocale pro _wcsicmp budete chtít pracovat s Latin 1 znaků.Národní prostředí C platí ve výchozím nastavení je, tedy například ä nebude porovnání rovná Ä.Volání setlocale s jakékoli jiné národní prostředí než národní prostředí C před voláním _wcsicmp.Následující příklad ukazuje, jak _wcsicmp velká a malá písmena na národní prostředí:

// 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
}

Další možností je volání _create_locale, _wcreate_locale a předejte objekt vrácený národní prostředí jako parametr _wcsicmp_l.

Všechny tyto funkce ověření jejich parametrů.Pokud buď string1 nebo string2 jsou ukazatele s hodnotou null, je volána obslužná rutina neplatný parametr, jak je popsáno v Ověření parametru .Pokud je povolena provádění chcete-li pokračovat, tyto funkce vracejí _NLSCMPERROR a nastavte errno k EINVAL.

Mapování rutin obecného textu

Rutina TCHAR.H

_UNICODE & _MBCS není definována.

_MBCS definováno

_UNICODE definováno

_tcsicmp

_stricmp

_mbsicmp

_wcsicmp

Požadavky

Rutina

Požadovaný hlavičkový soubor

_stricmp, _stricmp_l

< string.h >

_wcsicmp, _wcsicmp_l

< string.h > nebo < wchar.h >

_mbsicmp, _mbsicmp_l

< mbstring.h >

Další informace o kompatibilitě, naleznete v části kompatibility.

Příklad

// 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 );
}
  

Ekvivalent v rozhraní .NET Framework

System::String::Compare

Viz také

Referenční dokumentace

Zacházení s řetězci (CRT)

memcmp, wmemcmp

_memicmp, _memicmp_l

strcmp, wcscmp, _mbscmp

strcoll – funkce

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