Udostępnij za pośrednictwem


_stricmp, _wcsicmp, _mbsicmp, _stricmp_l, _wcsicmp_l, _mbsicmp_l

Wykonuje bez uwzględniania wielkości liter porównywania ciągów.

Ważna uwagaWażne

_mbsicmpi _mbsicmp_l nie można używać w aplikacji, które są wykonywane w środowiska wykonawczego systemu Windows.Aby uzyskać więcej informacji, zobacz funkcji CRT nie obsługują /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
    Ciągi zerem do porównania.

  • locale
    Ustawienia regionalne do użycia.

Wartość zwracana

Wartość zwracana wskazuje stosunek string1 do string2 w następujący sposób.

Wartość zwracana

Opis

< 0

string1 mniejsze niż string2

0

string1 taka sama, jak string2

> 0

string1 większe niż string2

W przypadku błędu _mbsicmp zwraca _NLSCMPERROR, która została zdefiniowana w < string.h > i < mbstring.h >.

Uwagi

_stricmp Ordinally funkcji porównuje string1 i string2 po konwersji każdy znak na małe litery i zwraca wartość wskazującą, ich relacji._stricmpróżni się od _stricoll , _stricmp tylko wpływ porównanie LC_CTYPE, określa, które znaki są wielkie i małe litery._stricoll Funkcji porównuje ciągi zgodnie z obu LC_CTYPE i LC_COLLATE kategorii ustawienia regionalne, który obejmuje zarówno wielkość, jak i kolejność sortowania.Aby uzyskać więcej informacji na temat LC_COLLATE kategorii, zobacz setlocale i kategorie ustawień regionalnych.Wersje tych funkcji bez _l sufiks użycia bieżących ustawień regionalnych w celu zachowania zależne od ustawień regionalnych.Wersje z sufiks są identyczne, z wyjątkiem tego, aby używały ustawień regionalnych przekazany w zamian.Jeśli nie zostało ustawione ustawienia regionalne, ustawienia regionalne C jest używany.Aby uzyskać więcej informacji, zobacz Regionalne.

[!UWAGA]

Zapis _stricmp jest równoważny zapisowi _strcmpi.Mogą być używane zamiennie, ale _stricmp jest preferowana standardowy.

_strcmpi Jest równoważna funkcji _stricmp i są przeznaczone wyłącznie zgodności z poprzednimi wersjami.

Ponieważ _stricmp małe porównania, może spowodować nieoczekiwane zachowanie.

Gdy ilustrujące sprawa konwersji przez _stricmp wpływa na wyniki porównania, założyć, że dwa ciągi JOHNSTON i JOHN_HENRY.Ciąg JOHN_HENRY będzie uznawana za mniej niż JOHNSTON ponieważ "_" ma wartość ASCII mniejszy niż małe litery S.W rzeczywistości dowolnego znaku, który ma wartość ASCII między 91 i 96 uznaje się za mniej niż dowolnej litery.

Jeśli strcmp funkcja jest używana zamiast klasy _stricmp, JOHN_HENRY będzie większa niż JOHNSTON.

_wcsicmpi _mbsicmp są wersjami całego znaku i znaków wielobajtowych _stricmp.Argumenty i zwrócona wartość _wcsicmp są ciągami znaków wide; te _mbsicmp są ciągami znaków wielobajtowych._mbsicmprozpoznaje sekwencje znaków wielobajtowych zgodnie z bieżącej strony kodowej wielobajtowych i zwraca _NLSCMPERROR na błąd.Aby uzyskać więcej informacji, zobacz stron kodu.Te trzy funkcje zachowują się tak samo w przeciwnym razie.

_wcsicmpi wcscmp zachowują się tak samo, z wyjątkiem wcscmp nie konwertuje argumenty na małe litery przed porównaniem ich._mbsicmpi _mbscmp zachowują się tak samo, z wyjątkiem _mbscmp nie konwertuje argumenty na małe litery przed porównaniem ich.

Należy wywołać setlocale dla _wcsicmp do pracy z znaki alfabetu łacińskiego 1.Ustawienia regionalne C jest rozruch domyślnie tak, na przykład ä nie będzie porównania taki sam, jak Ä.Wywołanie setlocale z żadnych ustawień regionalnych innych niż ustawienia regionalne C przed wywołaniem _wcsicmp.Poniższy przykład pokazuje, jak _wcsicmp jest cenne dla ustawienia regionalne:

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

Alternatywą jest wywoływanie _create_locale, _wcreate_locale i przekazać obiekt zwrócony ustawień regionalnych jako parametr do _wcsicmp_l.

Wszystkie te funkcje sprawdza poprawność ich parametrów.Jeśli jedna z metod string1 lub string2 są wskaźniki wartości null, program obsługi nieprawidłowy parametr zostanie wywołany, zgodnie z opisem w Sprawdzanie poprawności parametru .Jeśli jest dozwolone wykonywanie, aby kontynuować, te funkcje zwracają _NLSCMPERROR i ustawić errno do EINVAL.

Mapowania procedur zwykłego tekstu

Procedura TCHAR.H

_UNICODE & _MBCS nie zdefiniowano

_MBCS zdefiniowano

_UNICODE zdefiniowano

_tcsicmp

_stricmp

_mbsicmp

_wcsicmp

Wymagania

Procedura

Wymagany nagłówek

_stricmp, _stricmp_l

< string.h >

_wcsicmp, _wcsicmp_l

< string.h > lub < wchar.h >

_mbsicmp, _mbsicmp_l

< mbstring.h >

Aby uzyskać dodatkowe informacje o zgodności, zobacz zgodności.

Przykład

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

Odpowiednik w programie .NET Framework

System::String::COMPARE

Zobacz też

Informacje

Manipulowanie ciągami (CRT)

memcmp, wmemcmp

_memicmp, _memicmp_l

strcmp, wcscmp, _mbscmp

strcoll — Funkcje

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