Sdílet prostřednictvím


_stricmp, _wcsicmp, _mbsicmp, _stricmp_l, _wcsicmp_l, _mbsicmp_l

Proveďte malé 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 systému Windows Runtime.Další informace naleznete v tématu CRT funkce nejsou podporovány 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
    Řetězce zakončené znakem null pro porovnání.

  • locale
    Chcete-li národní prostředí pro použití.

Vrácená hodnota

Vrácená hodnota označuje vztah z string1 na string2 takto.

Vrácená hodnota

Description

< 0

string1menší nežstring2

0

string1shodné sstring2

> 0

string1větší nežstring2

Na chybu _mbsicmp vrátí _NLSCMPERROR, který je definován v ŘETĚZCI.H a MBSTRING.H.

Poznámky

_stricmp Funkce lexicographically porovná malá verze string1 a string2 a vrátí hodnotu určující, jejich vzájemný vztah._stricmpse liší od _stricoll v tom, že _stricmp je ovlivněn porovnání LC_CTYPE, že _stricoll srovnání podle LC_CTYPE a LC_COLLATE kategorie národní prostředí.Další informace o LC_COLLATE kategorie, viz setlocale a Kategorie národního prostředí.Verze těchto funkcí, aniž by _l příponu použít aktuální národní prostředí pro chování závislé na národním prostředí.Verze s příponou jsou shodné s tím rozdílem, že používají národní prostředí, místo něho předán.Další informace naleznete v tématu Národní prostředí.

[!POZNÁMKA]

_stricmpje ekvivalentní k _strcmpi.Jsou zaměnitelné, ale _stricmp je upřednostňovaný standard.

_strcmpi Funkce je ekvivalentní _stricmp a je k dispozici pouze kvůli zpětné kompatibilitě.

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

Pro ilustraci, kdy případ převodu pomocí stricmp ovlivní výsledek porovnání, předpokládají, že máte dva řetězce JOHNSTON a JOHN_HENRY.JOHNSTON řetězec JOHN_HENRY bude považována za méně než protože "_" má nižší hodnoty ASCII, než malá písmena S.Ve skutečnosti libovolný znak, který má hodnotu ASCII 91 až 96 se považuje méně než libovolné písmeno.

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

_wcsicmpa _mbsicmp jsou verze širokého znaku a vícebajtové znakové sady _stricmp.Argumenty a vrácené hodnoty _wcsicmp jsou řetězci širokého znaku; u _mbsicmp jsou vícebajtové znakové řetězce._mbsicmprozpozná vícebajtové znakové sekvence podle aktuální vícebajtová znaková stránka a vrátí _NLSCMPERROR na chybu.(Další informace naleznete v tématu Kód stránky.) Tyto tři funkce chovat identicky jinak.

_wcsicmpa wcscmp s výjimkou případů, které se chovají stejně jako wcscmp nepřevede argumenty na malá písmena před porovnáváním._mbsicmpa _mbscmp s výjimkou případů, které se chovají stejně jako _mbscmp nepřevede argumenty na malá písmena před porovnáváním.

Potřebujete-li volat setlocale pro _wcsicmp pro práci se znaky latinky 1.Národní prostředí C ve skutečnosti ve výchozím nastavení je, tedy například ä nebude porovnávat rovna Ä.Volání setlocale se žádné jiné národní prostředí než národní prostředí C před voláním _wcsicmp.Následující ukázka znázorňuje, jak _wcsicmp je citlivé 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
}

Alternativou je volat _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 string1 nebo string2 jsou NULL je vyvolán ukazatelů, obslužná rutina neplatný parametr, jak je popsáno v Ověření parametrů .Pokud je povoleno zpracování, chcete-li pokračovat, tyto funkce vracejí _NLSCMPERROR a errno na EINVAL.

Mapování rutiny obecného textu

TCHAR.Byla zahájena rutina h

_UNICODE & _MBCS není definováno

_MBCS, definice

_UNICODE definována

_tcsicmp

_stricmp

_mbsicmp

_wcsicmp

Požadavky

Byla zahájena rutina

Požadované záhlaví

_stricmp, _stricmp_l

<string.h>

_wcsicmp, _wcsicmp_l

<string.h> nebo <wchar.h>

_mbsicmp, _mbsicmp_l

<mbstring.h>

Další informace o kompatibilitě, viz Compatibility v úvodu.

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

Manipulaci s řetězci (CRT)

memcmp wmemcmp

_memicmp _memicmp_l

strcmp, wcscmp, _mbscmp

Funkce 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