_stricmp, _wcsicmp, _mbsicmp, _stricmp_l, _wcsicmp_l, _mbsicmp_l
Przeprowadzić małe litery porównania ciągów.
Waż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
Zobacz też
Informacje
strncmp, wcsncmp, _mbsncmp, _mbsncmp_l
_strnicmp, _wcsnicmp, _mbsnicmp, _strnicmp_l, _wcsnicmp_l, _mbsnicmp_l
strrchr, wcsrchr, _mbsrchr, _mbsrchr_l