_stricmp
, _wcsicmp
, _mbsicmp
, _stricmp_l
, , _wcsicmp_l
_mbsicmp_l
Provede porovnání řetězců bez rozlišování velkých a malých písmen.
Důležité
_mbsicmp
a _mbsicmp_l
nelze je použít v aplikacích, které se spouští v prostředí Windows Runtime. Další informace najdete v tématu Funkce CRT, které nejsou v aplikacích Univerzální platforma Windows podporované.
Syntaxe
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
Řetězce ukončené hodnotou null, které se mají porovnat.
locale
Národní prostředí, které se má použít.
Vrácená hodnota
Návratová hodnota označuje vztah k string2
následujícímustring1
.
Vrácená hodnota | Popis |
---|---|
< 0 | string1 méně než string2 |
0 | string1 shodný s string2 |
> 0 | string1 větší než string2 |
Při chybě vrátí hodnotu _mbsicmp
_NLSCMPERROR
, která je definována v <string.h>
a <mbstring.h>
.
Poznámky
Funkce _stricmp
porovnává string1
a string2
po převodu jednotlivých znaků na malá písmena a vrátí hodnotu označující jejich vztah. _stricmp
liší se od _stricoll
toho, že _stricmp
porovnání je ovlivněno LC_CTYPE
pouze , což určuje, které znaky jsou velká a malá písmena. Funkce _stricoll
porovnává řetězce podle LC_CTYPE
kategorií národního LC_COLLATE
prostředí, což zahrnuje jak velikost písmen, tak pořadí kolace. Další informace o LC_COLLATE
kategorii najdete v tématech setlocale
a kategoriích národního prostředí. Verze těchto funkcí bez _l
přípony používají aktuální národní prostředí pro chování závislé na národním prostředí. Verze s příponou jsou shodné s tím rozdílem, že místo toho používají národní prostředí předané. Pokud národní prostředí nebylo nastaveno, použije se národní prostředí jazyka C. Další informace naleznete v tématu Národní prostředí.
Poznámka:
_stricmp
je ekvivalent _strcmpi
. Lze je použít zaměnitelně, ale _stricmp
je upřednostňovaným standardem.
Funkce _strcmpi
je ekvivalentní _stricmp
a je poskytována pouze pro zpětnou kompatibilitu.
Vzhledem k tomu _stricmp
, že porovnávání malými písmeny může vést k neočekávanému chování.
Chcete-li ilustrovat, kdy převod _stricmp
případů ovlivňuje výsledek porovnání, předpokládejme, že máte dva řetězce JOHNSTON
a JOHN_HENRY
. Řetězec JOHN_HENRY
bude považován za menší, než JOHNSTON
protože "_
" má nižší hodnotu ASCII než malá písmena S. Ve skutečnosti bude každý znak, který má hodnotu ASCII mezi 91 a 96, považován za menší než jakékoli písmeno.
strcmp
Pokud je funkce použita místo _stricmp
, JOHN_HENRY
bude větší než JOHNSTON
.
_wcsicmp
a _mbsicmp
jsou širokoznakové a vícebajtové verze ._stricmp
Argumenty a návratová hodnota jsou řetězce širokého znaku _wcsicmp
. Argumenty a návratová _mbsicmp
hodnota jsou řetězce s vícebajtovými znaky. _mbsicmp
rozpozná vícebajtové sekvence znaků podle aktuální vícebajtové znakové stránky a vrátí chybu _NLSCMPERROR
. Další informace najdete v tématu Kódové stránky. Tyto tři funkce se chovají stejně jinak.
_wcsicmp
a wcscmp
chovejte se stejně, s tím rozdílem, že wcscmp
před porovnáním argumentů nepřevádí argumenty na malá písmena. _mbsicmp
a _mbscmp
chovejte se stejně, s tím rozdílem, že _mbscmp
před porovnáním argumentů nepřevádí argumenty na malá písmena.
Budete muset volat setlocale
, _wcsicmp
abyste mohli pracovat s latinkou 1 znaky. Národní prostředí jazyka C je ve výchozím nastavení účinné, takže například ä se nerovná Ä. Před voláním volejte setlocale
_wcsicmp
s jakýmkoli jiným národním prostředím než národním prostředím jazyka C . Následující ukázka ukazuje, jak _wcsicmp
je citlivé na národní prostředí:
// 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
}
Alternativou je volání _create_locale
_wcreate_locale
a předání vráceného objektu národního prostředí jako parametru ._wcsicmp_l
Všechny tyto funkce ověřují své parametry. Pokud jsou nebo string2
string1
jsou ukazatele null, je vyvolána neplatná obslužná rutina parametru, jak je popsáno v ověření parametru . Pokud provádění může pokračovat, tyto funkce se vrátí _NLSCMPERROR
a nastaví errno
na EINVAL
.
Mapování rutin obecného textu
TCHAR.H rutina |
_UNICODE a _MBCS není definován |
_MBCS definovaný |
_UNICODE definovaný |
---|---|---|---|
_tcsicmp |
_stricmp |
_mbsicmp |
_wcsicmp |
Požadavky
Rutina | Požadovaný hlavičkový soubor |
---|---|
_stricmp , _stricmp_l |
<string.h> |
_wcsicmp , _wcsicmp_l |
<string.h> nebo <wchar.h> |
_mbsicmp , _mbsicmp_l |
<mbstring.h> |
Další informace o kompatibilitě najdete v tématu Kompatibilita.
Příklad
// 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
Viz také
Manipulace s řetězci
memcmp
, wmemcmp
_memicmp
, _memicmp_l
strcmp
, , wcscmp
_mbscmp
strcoll
– funkce
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