Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Wykonuje porównanie ciągów bez uwzględniania wielkości liter.
Ważne
_mbsicmp
nie można jej _mbsicmp_l
używać w aplikacjach wykonywanych w środowisko wykonawcze systemu Windows. Aby uzyskać więcej informacji, zobacz Funkcje CRT nieobsługiwane w aplikacjach platforma uniwersalna systemu Windows.
Składnia
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 zakończone wartością null do porównania.
locale
Ustawienia regionalne do użycia.
Wartość zwracana
Wartość zwracana wskazuje relację z string1
string2
w następujący sposób.
Wartość zwracana | opis |
---|---|
< 0 | string1 mniejsze niż string2 |
0 | string1 identyczne z string2 |
> 0 | string1 większe niż string2 |
W przypadku błędu _mbsicmp
zwraca _NLSCMPERROR
wartość , która jest zdefiniowana w elementach <string.h>
i <mbstring.h>
.
Uwagi
Funkcja _stricmp
porównuje string1
i string2
po przekonwertowaniu każdego znaku na małe litery i zwraca wartość wskazującą ich relację. _stricmp
różni się od _stricoll
tego, że _stricmp
porównanie ma wpływ tylko na LC_CTYPE
element , który określa, które znaki są wielkie i małe. Funkcja _stricoll
porównuje ciągi zarówno według kategorii ustawień regionalnych, jak LC_CTYPE
i LC_COLLATE
, które obejmują zarówno wielkość liter, jak i kolejność sortowania. Aby uzyskać więcej informacji na temat LC_COLLATE
kategorii, zobacz setlocale
i Kategorie ustawień regionalnych. Wersje tych funkcji bez sufiksu _l
używają bieżących ustawień regionalnych dla zachowania zależnego od ustawień regionalnych. Wersje z sufiksem są identyczne, z tą różnicą, że używają ustawień regionalnych przekazanych w zamian. Jeśli ustawienia regionalne nie zostały ustawione, używane są ustawienia regionalne języka C. Aby uzyskać więcej informacji, zobacz Ustawienia regionalne.
Uwaga
_stricmp
jest równoważne z _strcmpi
. Można ich używać zamiennie, ale _stricmp
jest preferowanym standardem.
Funkcja jest równoważna _strcmpi
_stricmp
i jest udostępniana tylko w celu zapewnienia zgodności z poprzednimi wersjami.
Ponieważ _stricmp
porównanie małych liter może spowodować nieoczekiwane zachowanie.
Aby zilustrować, kiedy konwersja _stricmp
wielkości liter wpływa na wynik porównania, załóżmy, że masz dwa ciągi JOHNSTON
i JOHN_HENRY
. Ciąg JOHN_HENRY
będzie traktowany jako mniejszy niż JOHNSTON
, ponieważ "_
" ma niższą wartość ASCII niż małe litery S. W rzeczywistości każdy znak, który ma wartość ASCII z zakresu od 91 do 96, będzie traktowany jako mniejszy niż dowolna litera.
strcmp
Jeśli funkcja jest używana zamiast _stricmp
, JOHN_HENRY
będzie większa niż JOHNSTON
.
_wcsicmp
i _mbsicmp
są wersjami znaków wielobajtowych i wielobajtowych ._stricmp
Argumenty i wartość zwracana _wcsicmp
wartości to ciągi wieloznakowe. Argumenty i wartość zwracana wartości to ciągi wielobajtowe _mbsicmp
znaków. _mbsicmp
rozpoznaje sekwencje wielobajtowe według bieżącej strony kodu wielobajtowego i zwraca błąd _NLSCMPERROR
. Aby uzyskać więcej informacji, zobacz Strony kodu. Te trzy funkcje zachowują się identycznie inaczej.
_wcsicmp
i wcscmp
zachowują się identycznie, z tą różnicą, że wcscmp
nie konwertuje argumentów na małe litery przed ich porównaniem. _mbsicmp
i _mbscmp
zachowują się identycznie, z tą różnicą, że _mbscmp
nie konwertuje argumentów na małe litery przed ich porównaniem.
Musisz wywołać metodę setlocale
_wcsicmp
, aby pracować z łacińskimi 1 znakami. Ustawienia regionalne języka C są domyślnie obowiązujące, więc na przykład ä nie będzie porównywana z wartością Ä. Przed wywołaniem wywołania należy wywołać _wcsicmp
dowolne setlocale
ustawienia regionalne inne niż ustawienia regionalne języka C. W poniższym przykładzie pokazano, jak _wcsicmp
jest wrażliwy na ustawienia regionalne:
// 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
}
Alternatywą jest wywołanie _create_locale
metody i _wcreate_locale
przekazanie zwróconego obiektu ustawień regionalnych jako parametru do _wcsicmp_l
.
Wszystkie te funkcje weryfikują swoje parametry. Jeśli wskaźniki string1
string2
mają wartość null, wywoływana jest nieprawidłowa procedura obsługi parametrów, zgodnie z opisem w temacie Weryfikacja parametru . Jeśli wykonanie jest dozwolone do kontynuowania, te funkcje zwracają _NLSCMPERROR
i ustawiają wartość errno
EINVAL
.
Mapowania procedur tekstu ogólnego
TCHAR.H rutyna |
_UNICODE i _MBCS niezdefiniowane |
_MBCS zdefiniowany |
_UNICODE zdefiniowany |
---|---|---|---|
_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ć więcej informacji o zgodności, zobacz Zgodność.
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 );
}
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
Zobacz też
Manipulowanie ciągami
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