Udostępnij za pośrednictwem


_stricmp, _wcsicmp, _mbsicmp, _stricmp_l, _wcsicmp_l, _mbsicmp_l

Przeprowadzić małe litery porównania ciągów.

Ważna uwagaWażne

_mbsicmpi _mbsicmp_l nie można używać w aplikacji, których wykonywanie w czasie wykonywania systemu Windows.Aby uzyskać więcej informacji, zobacz CRT funkcje nie obsługiwane przez /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
    Zakończony zerem ciągów do porównania.

  • locale
    Ustawienia regionalne używane.

Wartość zwracana

Wartość zwracana określa relację z string1 do string2 się następujące zmiany.

Zwracana wartość

Opis

< 0

string1mniej niżstring2

0

string1identycznestring2

> 0

string1większa niżstring2

Na błąd _mbsicmp zwraca _NLSCMPERROR, który jest zdefiniowany w ciągu.H i MBSTRING.H.

Uwagi

_stricmp Funkcja porównuje leksykograficznym małymi literami wersjach string1 i string2 i zwraca wartość określającą ich relacji._stricmpróżni się od _stricoll w tym _stricmp porównanie jest zagrożony LC_CTYPE, podczas gdy _stricoll porównanie jest według LC_CTYPE i LC_COLLATE kategorie określone w ustawieniach regionalnych.Więcej informacji na temat LC_COLLATE kategorii, zobacz setlocale i Kategorii.Wersje te funkcje, bez _l sufiks użyć bieżących ustawień regionalnych dla zachowania zależne od ustawień lokalnych.Wersje z sufiksem są identyczne z tym, że używają ustawień regionalnych, przekazany w zamian.Aby uzyskać więcej informacji, zobacz Ustawienia regionalne.

[!UWAGA]

_stricmpjest równoważne z _strcmpi.Mogą być używane zamiennie, ale _stricmp jest preferowana norma.

_strcmpi Funkcji odpowiada _stricmp i jest oferowana zgodność z poprzednimi wersjami.

Ponieważ stricmp małe litery porównań, może spowodować nieoczekiwane zachowanie.

Aby zilustrować, kiedy sprawa konwersji przez stricmp wpływa na wynik porównania, załóżmy, że dwa ciągi JOHNSTON i JOHN_HENRY.Ciąg znaków traktowany jest JOHN_HENRY, mniej niż JOHNSTON ponieważ "_" ma niższą wartość ASCII niż małe litery S.W rzeczywistości dowolny znak, który ma wartość ASCII między 91 i 96 rozważane są mniej niż dowolna litera.

Jeśli strcmp funkcja jest używana zamiast stricmp, JOHN_HENRY będzie większy niż JOHNSTON.

_wcsicmpi _mbsicmp szerokich znaków i znaków wielobajtowych wersje _stricmp.Argumenty i wartości zwracanej przez _wcsicmp są ciągami szerokich znaków; tych z _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 Strony kodowe.) Zmienia tych trzech funkcji zachowanie takich samych nazwach.

_wcsicmpi wcscmp zachowują się identycznie, chyba że wcscmp nie konwertuje argumenty na małe litery przed porównaniem ich._mbsicmpi _mbscmp zachowują się identycznie, chyba że _mbscmp nie konwertuje argumenty na małe litery przed porównaniem ich.

Będzie trzeba wywołać setlocale dla _wcsicmp do pracy ze znakami Latin 1.Ustawienia regionalne C jest w efekcie domyślnie, tak, na przykład ä nie będzie porównać równa Ä.Call setlocale z dowolnego ustawienia regionalne inne niż ustawienia regionalne C przed wywołaniem _wcsicmp.Poniższy przykład demonstruje, jak _wcsicmp zależy od ustawień regionalnych:

// 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łanie _create_locale, _wcreate_locale i przekazać obiekt zwrócony ustawień regionalnych jako parametr _wcsicmp_l.

Wszystkie te funkcje sprawdzania poprawności ich parametrów.Jeśli każda string1 lub string2 są NULL wskaźniki, program obsługi nieprawidłowy parametr jest wywoływana, zgodnie z opisem w Sprawdzanie poprawności parametru .Jeśli wykonanie może kontynuować, funkcje te zwracają _NLSCMPERROR i errno do EINVAL.

Tekst rodzajowy rutynowych mapowania

TCHAR.Rozpoczęto wykonywanie procedury h

_UNICODE & _MBCS nie zdefiniowany

_MBCS, definicja

_UNICODE, definicja

_tcsicmp

_stricmp

_mbsicmp

_wcsicmp

Wymagania

Rozpoczęto wykonywanie procedury

Wymaganego nagłówka

_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 we wprowadzeniu.

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

Funkcje 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