Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Führt einen Vergleich von Zeichenfolgen ohne Beachtung der Groß-/Kleinschreibung durch.
Wichtig
_mbsicmp und _mbsicmp_l können nicht in Anwendungen verwendet werden, die in Windows-Runtime ausgeführt werden. Weitere Informationen finden Sie im Artikel CRT functions not supported in Universal Windows Platform apps (In Apps für die universelle Windows-Plattform nicht unterstützte CRT-Funktionen).
Syntax
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
Zu vergleichende mit NULL endende Zeichenfolgen.
locale
Zu verwendendes Gebietsschema.
Rückgabewert
Der Rückgabewert gibt die Beziehung zwischen string1 und string2 wie folgt an.
| Rückgabewert | Beschreibung |
|---|---|
| < 0 | string1 kleiner als string2 |
| 0 | string1 identisch mit string2 |
| > 0 | string1 größer als string2 |
Gibt einen Fehler zurück_NLSCMPERROR, _mbsicmp der in <string.h> und <mbstring.h>definiert ist.
Hinweise
Die _stricmp Funktion vergleicht string1 und string2 nach der Konvertierung jedes Zeichens in Kleinbuchstaben und gibt einen Wert zurück, der die Beziehung angibt. _stricmp unterscheidet sich von _stricoll dahingehend, dass der _stricmp-Vergleich nur von LC_CTYPE beeinflusst wird, durch den bestimmt wird, welche Zeichen Großbuchstaben und welche Kleinbuchstaben sind. Die _stricoll-Funktion vergleicht Zeichenfolgen gemäß der Kategorien LC_CTYPE und LC_COLLATE des Gebietsschemas, das sowohl Groß-/Kleinschreibung als auch die Sortierreihenfolge umfasst. Weitere Informationen zur LC_COLLATE Kategorie finden Sie unter setlocale den Gebietsschemakategorien. Die Versionen dieser Funktionen ohne das _l-Suffix verwenden das aktuelle Gebietsschema für gebietsschemaabhängiges Verhalten. Die Versionen mit dem Suffix sind identisch, verwenden allerdings das übergebene Gebietsschema. Wenn das Gebietsschema nicht festgelegt wurde, wird das Gebietsschema C verwendet. Weitere Informationen finden Sie unter Locale.
Hinweis
_stricmp entspricht _strcmpi. Sie sind austauschbar, _stricmp ist jedoch der bevorzugte Standard.
Die _strcmpi-Funktion entspricht _stricmp und wird nur aus Gründen der Abwärtskompatibilität bereitgestellt.
Da _stricmp Kleinbuchstabenvergleiche ausführt, kann es zu unerwartetem Verhalten kommen.
Um zu veranschaulichen, wann sich die Fallkonvertierung auf _stricmp das Ergebnis eines Vergleichs auswirkt, gehen Sie davon aus, dass Sie über die beiden Zeichenfolgen JOHNSTON verfügen und JOHN_HENRY. Die Zeichenfolge JOHN_HENRY wird als kleiner betrachtet, als JOHNSTON weil der "_" einen niedrigeren ASCII-Wert aufweist als ein Kleinbuchstaben S. Tatsächlich gilt jedes Zeichen mit einem ASCII-Wert zwischen 91 und 96 als kleiner als jeder Buchstabe.
Wenn die strcmp Funktion anstelle von _stricmp, JOHN_HENRY wird größer als JOHNSTON.
_wcsicmp und _mbsicmp sind Breitzeichen- und Multibytezeichenversionen von _stricmp. Die Argumente und der Rückgabewert _wcsicmp sind Zeichenfolgen mit breitem Zeichen. Die Argumente und der Rückgabewert sind _mbsicmp Multibyte-Zeichenfolgen. _mbsicmp erkennt Multibyte-Zeichenfolgen entsprechend der aktuellen Multibyte-Codepage und gibt bei einem Fehler _NLSCMPERROR zurück. Weitere Informationen finden Sie unter Codeseiten. Diese drei Funktionen verhalten sich andernfalls identisch.
_wcsicmp und wcscmp verhalten sich identisch, mit der Ausnahme, dass wcscmp die Argumente nicht in Kleinbuchstaben konvertiert werden, bevor sie verglichen werden. _mbsicmp und _mbscmp verhalten sich identisch, mit der Ausnahme, dass _mbscmp die Argumente nicht in Kleinbuchstaben konvertiert werden, bevor sie verglichen werden.
Sie müssen dazu auffordern setlocale _wcsicmp , mit lateinischen 1 Zeichen zu arbeiten. Das Gebietsschema "C" ist standardmäßig wirksam, sodass ä z. B. nicht gleich Ä ist. Rufen Sie setlocale mit einem anderen Gebietsschema als dem C-Gebietsschema auf, bevor Sie _wcsicmp aufrufen. Das folgende Beispiel zeigt, wie _wcsicmp vom Gebietsschema abhängt:
// crt_stricmp_locale.c
By default, this function's global state is scoped to the application. To change this behavior, see [Global state in the CRT](../global-state.md).
#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, _wcreate_locale das zurückgegebene Gebietsschemaobjekt als Parameter aufzurufen _create_localeund an ._wcsicmp_l
Mit allen diesen Funktionen werden ihre Parameter überprüft. Wenn es sich um string1 Nullzeiger handelt string2 , wird der ungültige Parameterhandler aufgerufen, wie in der Parameterüberprüfung beschrieben. Wenn die weitere Ausführung zugelassen wird, geben diese Funktionen _NLSCMPERROR zurück und stellen errno auf EINVAL ein.
Mapping generischer Textroutinen
TCHAR.H-Routine |
_UNICODE und _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> |
Weitere Informationen zur Kompatibilität finden Sie unter Kompatibilität.
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 );
}
Compare strings:
The quick brown dog jumps over the lazy fox
The QUICK brown dog jumps over the lazy fox
strcmp: String 1 is greater than string 2
_stricmp: String 1 is equal to string 2
Siehe auch
Zeichenfolgenbearbeitung
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