Freigeben über


_stricmp, _wcsicmp, _mbsicmp, _stricmp_l, _wcsicmp_l, _mbsicmp_l

Führen Sie ein kleingeschriebenes Vergleich von Zeichenfolgen aus.

Wichtiger HinweisWichtig

_mbsicmp und _mbsicmp_l können in Anwendungen nicht verwendet werden, die in der Windows Runtime ausführen.Weitere Informationen finden Sie unter CRT-Funktionen unterstützt nicht mit /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 );

Parameter

  • string1, string2
    Auf NULL endende Zeichenfolgen zu vergleichen.

  • locale
    Zu verwendende Gebietsschema.

Rückgabewert

Der Rückgabewert gibt die Beziehung aus string1 zu string2 wie folgt an.

Rückgabewert

Beschreibung

< 0

string1 kleiner als string2

0

string1 identisch zu string2

> 0

string1 größer als string2

Auf einem Fehler gibt _mbsicmp_NLSCMPERROR zurück, der in STRING.H und in MBSTRING.H. definiert ist.

Hinweise

Die Funktion vergleicht _stricmp lexikografisch kleingeschriebene Versionen von string1 und von string2 und gibt einen Wert zurück, der die Beziehung angibt._stricmp unterscheidet sich von _stricoll darin, dass der _stricmp Vergleich von LC_CTYPE beeinflusst wird, während der _stricoll Vergleich gemäß den LC_CTYPE und LC_COLLATE Kategorien des Gebietsschemas ist.Weitere Informationen über die LC_COLLATE Kategorie, finden Sie unter setlocale und Gebietsschema-Kategorien.Die Versionen dieser Funktionen ohne das _l Suffix verwenden das aktuelle Gebietsschema gebietsschemaabhängiges Verhalten.Die Versionen mit dem Suffix sind identisch, allerdings verwenden das Gebietsschema, das in stattdessen übergeben wird.Weitere Informationen finden Sie unter Gebietsschema.

HinweisHinweis

_stricmp entspricht _strcmpi.Sie können synonym verwendet werden, aber _stricmp ist der bevorzugte Standard.

Die _strcmpi-Funktion ist für _stricmp entsprechend und wird nur aus Gründen der Abwärtskompatibilität bereitgestellt.

Da stricmp kleingeschriebene Vergleiche ausführt, kann es zu unerwartetem Verhalten.

Um zu veranschaulichen beim Unterscheidung der Groß-/Kleinschreibung von stricmp das Ergebnis eines Vergleichs beeinflusst angenommen, dass Sie die beiden Zeichenfolgen JOHNSTON und JOHN_HENRY haben.Die Zeichenfolge wird als JOHN_HENRY kleiner als JOHNSTON, da das "_" einen niedrigeren ASCII-Wert als kleingeschriebenes S verfügt.Tatsächlich ein Zeichen, das einen ASCII-Wert zwischen 91 und 96 als kleiner betrachtet werden, entweder als Buchstabe.

Wenn die strcmp-Funktion anstelle stricmp verwendet wird, ist JOHN_HENRY größer als JOHNSTON.

_wcsicmp und _mbsicmp sind Breitzeich und Mehrbytezeichen-Versionen von _stricmp.Die Argumente und der Rückgabewert von _wcsicmp sind Breitzeichen-Zeichenfolgen; die von _mbsicmp sind Mehrbyte-Zeichenfolgen._mbsicmp erkennt Mehrbytezeichensequenzen entsprechend der aktuellen Mehrbyte-Codepage und gibt _NLSCMPERROR auf einem Fehler zurück.(Weitere Informationen finden Sie unter, Codepages.) Diese drei Funktionen verhalten sich andernfalls identisch.

_wcsicmp und wcscmp verhalten sich identisch, außer dass wcscmp konvertiert seine Argumente nicht in Kleinbuchstaben, bevor Sie diese vergleichen._mbsicmp und _mbscmp verhalten sich identisch, außer dass _mbscmp konvertiert seine Argumente nicht in Kleinbuchstaben, bevor Sie diese vergleichen.

Sie müssen setlocale aufrufen, damit _wcsicmp mit Zeichen des Lateins 1 funktioniert.Das C-Gebietsschema wirksam ist standardmäßig so vergleicht beispielsweise ä nicht gleich Ä.Rufen Sie setlocale mit einem anderen Gebietsschema als das C-Gebietsschema vor dem Aufruf von _wcsicmp auf.Das folgende Beispiel zeigt, wie _wcsicmp dem Gebietsschema vertraulich ist:

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

Eine Alternative besteht darin, _create_locale, _wcreate_locale aufzurufen und das zurückgegebene Gebietsschemaobjekt als Parameter zu übergeben _wcsicmp_l zu.

Alle diese Funktionen überprüfen ihre Parameter.Wenn entweder string1 oder string2NULL Zeiger sind, wird der ungültige Parameterhandler aufgerufen, wie in Parametervalidierung beschrieben.Wenn die Ausführung zulässig ist, um fortzufahren, geben diese Funktionen _NLSCMPERROR zurück und legen errno auf EINVAL fest.

Zuordnung generische Textroutinen

TCHAR.H-Routine

_UNICODE & _MBCS nicht definiert.

_MBCS definiert

_UNICODE definiert

_tcsicmp

_stricmp

_mbsicmp

_wcsicmp

Anforderungen

Routine

Erforderlicher Header

_stricmp, _stricmp_l

<string.h>

_wcsicmp, _wcsicmp_l

<string.h> oder <wchar.h>

_mbsicmp, _mbsicmp_l

<mbstring.h>

So zusätzlicher Kompatibilitätsinformation finden Sie unter Kompatibilität in der Einführung.

Beispiel

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

System::String::Compare

Siehe auch

Referenz

Zeichenfolgenbearbeitung (CRT)

memcmp, wmemcmp

_memicmp, _memicmp_l

strcmp, wcscmp, _mbscmp

strcoll Funktionen

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