_stricmp
, _wcsicmp
, _mbsicmp
, _stricmp_l
, _wcsicmp_l
_mbsicmp_l
Esegue un confronto di stringhe senza distinzione tra maiuscole/minuscole.
Importante
_mbsicmp
e _mbsicmp_l
non possono essere usati nelle applicazioni eseguite in Windows Runtime. Per altre informazioni, vedere Funzioni CRT non supportate nelle app della piattaforma UWP (Universal Windows Platform).
Sintassi
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
);
Parametri
string1
, string2
Stringhe che terminano con Null da confrontare.
locale
Impostazioni locali da usare.
Valore restituito
Il valore restituito indica la relazione di string1
con string2
come descritto di seguito.
Valore restituito | Descrizione |
---|---|
< 0 | string1 minore di string2 |
0 | string1 uguale a string2 |
> 0 | string1 maggiore di string2 |
In caso di errore, restituisce _mbsicmp
_NLSCMPERROR
, definito in <string.h>
e <mbstring.h>
.
Osservazioni:
La _stricmp
funzione confronta string1
e string2
dopo la conversione di ogni carattere in minuscolo e restituisce un valore che indica la relazione. _stricmp
è diverso da _stricoll
perché il confronto con _stricmp
è interessato solo da LC_CTYPE
, che determina quali caratteri sono in maiuscolo e quali in minuscolo. La funzione _stricoll
confronta le stringhe in base alle categorie LC_CTYPE
e LC_COLLATE
delle impostazioni locali, che includono sia i caratteri maiuscoli/minuscoli che l'ordine delle regole di confronto. Per altre informazioni sulla LC_COLLATE
categoria, vedere setlocale
e Categorie di impostazioni locali. Le versioni di queste funzioni senza il suffisso _l
usano le impostazioni locali per il comportamento dipendente dalle impostazioni locali. Le versioni con il suffisso sono identiche, ma usano le impostazioni locali passate. Se le impostazioni locali non sono state impostate, vengono usate le impostazioni locali C. Per altre informazioni, vedere Locale.
Nota
_stricmp
è pari a _strcmpi
. Possono essere usati indifferentemente, ma _stricmp
è lo standard preferito.
La funzione _strcmpi
è equivalente a _stricmp
ed è fornita solo per la compatibilità con le versioni precedenti.
_stricmp
esegue i confronti con caratteri minuscoli, pertanto può produrre comportamenti imprevisti.
Per illustrare quando la conversione _stricmp
di maiuscole e minuscole influisce sul risultato di un confronto, si supponga di avere le due stringhe JOHNSTON
e JOHN_HENRY
. La stringa JOHN_HENRY
verrà considerata minore di JOHNSTON
perché "_
" ha un valore ASCII inferiore rispetto a un valore S minuscolo. In effetti, qualsiasi carattere con valore ASCII compreso tra 91 e 96 verrà considerato minore di qualsiasi lettera.
Se la strcmp
funzione viene usata invece di _stricmp
, JOHN_HENRY
sarà maggiore di JOHNSTON
.
_wcsicmp
e _mbsicmp
sono versioni con caratteri wide e caratteri multibyte di _stricmp
. Gli argomenti e il valore restituito di sono stringhe di _wcsicmp
caratteri wide. Gli argomenti e il valore restituito di sono stringhe di _mbsicmp
caratteri multibyte. _mbsicmp
riconosce le sequenze di caratteri multibyte in base alla tabella codici multibyte corrente e restituisce _NLSCMPERROR
in caso di errore. Per altre informazioni, vedere Tabelle codici. A parte ciò, queste tre funzioni si comportano in modo identico.
_wcsicmp
e wcscmp
si comportano in modo identico, ad eccezione del fatto che wcscmp
non converte i relativi argomenti in lettere minuscole prima di confrontarli. _mbsicmp
e _mbscmp
si comportano in modo identico, ad eccezione del fatto che _mbscmp
non converte i relativi argomenti in lettere minuscole prima di confrontarli.
Dovrai chiamare setlocale
per _wcsicmp
lavorare con i caratteri Latin 1. Le impostazioni locali C sono effettive per impostazione predefinita, quindi, ad esempio, ä non sarà uguale a Ä. Chiamare setlocale
con qualsiasi impostazione locale ad eccezione di C prima della chiamata a _wcsicmp
. Il seguente esempio mostra in che modo _wcsicmp
sia sensibile alle impostazioni locali:
// 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
}
Un'alternativa consiste nel chiamare _create_locale
_wcreate_locale
e passare l'oggetto impostazioni locali restituite come parametro a ._wcsicmp_l
Tutte queste funzioni convalidano i relativi parametri. Se o string1
string2
sono puntatori Null, viene richiamato il gestore di parametri non validi, come descritto in Convalida dei parametri . Se l'esecuzione può continuare, queste funzioni restituiscono _NLSCMPERROR
e impostano errno
su EINVAL
.
Mapping di routine di testo generico
TCHAR.H routine |
_UNICODE e _MBCS non definito |
_MBCS definito |
_UNICODE definito |
---|---|---|---|
_tcsicmp |
_stricmp |
_mbsicmp |
_wcsicmp |
Requisiti
Ciclo | Intestazione obbligatoria |
---|---|
_stricmp , _stricmp_l |
<string.h> |
_wcsicmp , _wcsicmp_l |
<string.h> oppure <wchar.h> |
_mbsicmp , _mbsicmp_l |
<mbstring.h> |
Per altre informazioni sulla compatibilità, vedere Compatibility (Compatibilità).
Esempio
// 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
Vedi anche
Manipolazione delle stringhe
memcmp
, wmemcmp
_memicmp
, _memicmp_l
strcmp
, wcscmp
, _mbscmp
Funzioni strcoll
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