_stricmp, _wcsicmp, _mbsicmp, _stricmp_l, _wcsicmp_l, _mbsicmp_l
Wykonuje bez uwzględniania wielkości liter porównywania ciągów.
Waż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
Zobacz też
Informacje
strncmp, wcsncmp, _mbsncmp, _mbsncmp_l
_strnicmp, _wcsnicmp, _mbsnicmp, _strnicmp_l, _wcsnicmp_l, _mbsnicmp_l
strrchr, wcsrchr, _mbsrchr, _mbsrchr_l