_stricmp, _wcsicmp, _mbsicmp, _stricmp_l, _wcsicmp_l, _mbsicmp_l
Eseguire un confronto di minuscole delle stringhe.
Importante |
---|
_mbsicmp e _mbsicmp_l non possono essere utilizzati nelle applicazioni eseguite nelle finestre runtime.Per ulteriori informazioni, vedere Funzioni CRT non supportate con /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
);
Parametri
string1, string2
Stringhe che terminano con null da confrontare.locale
Impostazioni locali da utilizzare.
Valore restituito
Il valore restituito indica la relazione tra string1 e string2 come segue.
Valore restituito |
Descrizione |
---|---|
< 0 |
string1 minore di string2 |
0 |
string1 uguale a string2 |
> 0 |
string1 è maggiore di string2 |
In caso di errore, _mbsicmp restituisce _NLSCMPERROR, definito in STRING.H e in MBSTRING.H.
Note
La funzione di _stricmplessicografico confrontate le versioni in lettere minuscole di string1 e di string2 e restituisce un valore che indica la relazione._stricmpdifferisce da _stricollin quanto il confronto di _stricmpè interessato da LC_CTYPE, mentre il confronto di _stricollè in base alle categorie di LC_COLLATEe di LC_CTYPEdelle impostazioni locali.Per ulteriori informazioni sulla categoria di LC_COLLATE, vedere setlocale e Categorie di impostazioni locali.Le versioni di queste funzioni senza il suffisso _l utilizzano le impostazioni locali correnti per il comportamento dipendente dalle impostazioni locali.Le versioni con il suffisso sono identiche ma utilizzano le impostazioni locali passate in alternativa.Per ulteriori informazioni, vedere Impostazioni locali.
[!NOTA]
_stricmp è equivalente a _strcmpi.Esse sono intercambiabili ma _stricmp è lo standard preferito.
La funzione di _strcmpiequivale a _stricmpe viene fornita per compatibilità con le versioni precedenti di.
Poiché stricmp esegue confronti in lowercase, può avere un comportamento imprevisto.
Per mostrare quando la conversione in lettere maiuscole o minuscole da stricmp ha effetto 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 di una minuscola S.Infatti, i caratteri con un valore ASCII compresi tra 91 e 96 vengono considerati inferiori rispetto alle lettere.
Se la funzione strcmp viene utilizzata al posto di stricmp, JOHN_HENRY sarà maggiore di JOHNSTON.
_wcsicmp e _mbsicmp sono versioni a caratteri di tipo "wide" e di caratteri multibyte di _stricmp.Gli argomenti e il valore restituito di _wcsicmp sono stringhe di caratteri di tipo "wide", quelli di _mbsicmp sono stringhe di caratteri multibyte._mbsicmp riconosce le sequenze di caratteri multibyte in base alla tabella del codice multibyte corrente e restituisce _NLSCMPERROR in caso di errore.(Per ulteriori informazioni, vedere la pagina Tabelle dei codici.) Altrimenti queste tre funzioni si comportano in modo identico.
_wcsicmp e wcscmp si comportano in modo identico con la differenza che wcscmp non converte i relativi argomenti in minuscolo prima di confrontarli._mbsicmp e _mbscmp si comportano in modo identico con la differenza che _mbscmp non converte i relativi argomenti in minuscolo prima di confrontarli.
È necessario chiamare setlocale perché _wcsicmp funzioni con i caratteri Latin 1.Le impostazioni locali C sono valide per impostazione predefinita, pertanto, ad esempio, le lettere ä e Ä non saranno uguali.Chiamare setlocale con tutte le impostazioni locali diverse dalle impostazioni locali C prima della chiamata a _wcsicmp.Nell'esempio seguente viene illustrato come _wcsicmpè sensibile alle impostazioni locali:
// 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
}
Un'alternativa consiste nel chiamare _create_locale, _wcreate_locale e passare l'oggetto locale restituito come parametro a _wcsicmp_l.
Tutte queste funzioni convalidano i relativi parametri.Se string1 o string2 sono puntatori NULL, il gestore di parametri non validi viene invocato, come descritto in Convalida dei parametri.Se all'esecuzione è permesso continuare, queste funzioni restituiscono _NLSCMPERROR e impostano errno a EINVAL.
Mapping di routine a Testo generico
TCHAR.H routine |
_UNICODE & _MBCS non definiti |
_MBCS definito |
_UNICODE definito |
---|---|---|---|
_tcsicmp |
_stricmp |
_mbsicmp |
_wcsicmp |
Requisiti
Routine |
Intestazione obbligatoria |
---|---|
_stricmp, _stricmp_l |
<string.h> |
_wcsicmp, _wcsicmp_l |
<string.h> o <wchar.h> |
_mbsicmp, _mbsicmp_l |
<mbstring.h> |
Per ulteriori informazioni sulla compatibilità, vedere Compatibilità nell'introduzione.
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 );
}
Equivalente .NET Framework
Vedere anche
Riferimenti
strncmp, wcsncmp, _mbsncmp, _mbsncmp_l
_strnicmp, _wcsnicmp, _mbsnicmp, _strnicmp_l, _wcsnicmp_l, _mbsnicmp_l
strrchr, wcsrchr, _mbsrchr, _mbsrchr_l