_stricmp, _wcsicmp, _mbsicmp, _stricmp_l, _wcsicmp_l, _mbsicmp_l
Provádí velká a malá písmena porovnání řetězců.
Důležité |
---|
_mbsicmpa _mbsicmp_l nelze použít v aplikacích, které jsou spuštěny v běhovém prostředí systému Windows.Další informace naleznete v tématu CRT funkce nepodporované s /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
Ukončený hodnotou Null řetězce k porovnání.locale
Národní prostředí má použít.
Vrácená hodnota
Návratová hodnota udává poměr string1 k string2 následujícím způsobem.
Návratová hodnota |
Popis |
---|---|
< 0 |
string1 menší než string2 |
0 |
string1 identické string2 |
> 0 |
string1 větší než string2 |
Na chybu _mbsicmp vrátí _NLSCMPERROR, který je definován v < string.h > a < mbstring.h >.
Poznámky
_stricmp Funkce ordinally porovná string1 a string2 po převodu každý znak na malá písmena a vrátí hodnotu, která určuje jejich relace._stricmpse liší od _stricoll v tom, _stricmp porovnání pouze ovlivněny LC_CTYPE, která určuje, které znaky jsou malá a velká písmena._stricoll Funkce porovná řetězce podle oba LC_CTYPE a LC_COLLATE kategorie národní prostředí, což zahrnuje případ a pořadí řazení.Další informace o LC_COLLATE kategorie, naleznete v části setlocale a kategorie národní prostředí.Verze pro tyto funkce bez _l přípona použít aktuální národní prostředí pro chování závislé na národní prostředí.Verze s příponou jsou identické, s tím rozdílem, že používají místo něho předán v národním prostředí.Pokud nebyla nastavena národní prostředí, je použita C národní prostředí.Další informace naleznete v tématu Národní prostředí.
[!POZNÁMKA]
_stricmp je ekvivalentem _strcmpi.Může být použit vzájemně zaměňovat, ale _stricmp je upřednostňovaný standard.
_strcmpi Funkce je ekvivalentní volání _stricmp a jsou poskytnuty pouze z důvodu zpětné kompatibility.
Protože _stricmp malá písmena porovnávání, může způsobit neočekávané chování.
Když ilustrovat případu převodu pomocí _stricmp ovlivní výsledek porovnání, předpokládat, že máte dva řetězce JOHNSTONŮV a JOHN_HENRY.JOHNSTONŮV řetězec JOHN_HENRY bude považován za méně než vzhledem k tomu, že "_" má hodnotu ASCII nižší než malá písmena S.Ve skutečnosti libovolný znak, který má hodnotu ASCII mezi 91 a 96 bude považovat za méně než na jakékoli písmeno.
Pokud strcmp funkce se používá místo _stricmp, JOHN_HENRY bude větší než JOHNSTONŮV.
_wcsicmpa _mbsicmp jsou širokého znaku a multibajtové znakové verze _stricmp.Argumenty a vrácené hodnoty _wcsicmp jsou řetězce širokého znaku; u _mbsicmp jsou multibajtové znakové řetězce._mbsicmprozpozná multibajtové znakové pořadí podle aktuální více znakovou stránku a vrátí _NLSCMPERROR na chybu.Další informace naleznete v tématu znakové stránky.Tyto tři funkce chovat stejně jako v opačném případě.
_wcsicmpa wcscmp s výjimkou těch, které se chovají stejně jako wcscmp nepřevádět argumenty na malá písmena před jejich porovnání._mbsicmpa _mbscmp s výjimkou těch, které se chovají stejně jako _mbscmp nepřevádět argumenty na malá písmena před jejich porovnání.
Je třeba volat setlocale pro _wcsicmp budete chtít pracovat s Latin 1 znaků.Národní prostředí C platí ve výchozím nastavení je, tedy například ä nebude porovnání rovná Ä.Volání setlocale s jakékoli jiné národní prostředí než národní prostředí C před voláním _wcsicmp.Následující příklad ukazuje, jak _wcsicmp velká a malá písmena na národní prostředí:
// 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
}
Další možností je volání _create_locale, _wcreate_locale a předejte objekt vrácený národní prostředí jako parametr _wcsicmp_l.
Všechny tyto funkce ověření jejich parametrů.Pokud buď string1 nebo string2 jsou ukazatele s hodnotou null, je volána obslužná rutina neplatný parametr, jak je popsáno v Ověření parametru .Pokud je povolena provádění chcete-li pokračovat, tyto funkce vracejí _NLSCMPERROR a nastavte errno k EINVAL.
Mapování rutin obecného textu
Rutina TCHAR.H |
_UNICODE & _MBCS není definována. |
_MBCS definováno |
_UNICODE definováno |
---|---|---|---|
_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ě, naleznete v části kompatibility.
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 );
}
Ekvivalent v rozhraní .NET Framework
Viz také
Referenční dokumentace
strncmp, wcsncmp, _mbsncmp, _mbsncmp_l
_strnicmp, _wcsnicmp, _mbsnicmp, _strnicmp_l, _wcsnicmp_l, _mbsnicmp_l
strrchr, wcsrchr, _mbsrchr, _mbsrchr_l