_stricmp, _wcsicmp, _mbsicmp, _stricmp_l, _wcsicmp_l, _mbsicmp_l

Eseguire un confronto di minuscole delle stringhe.

Nota importanteImportante

_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

System::String::Compare

Vedere anche

Riferimenti

Modifica delle stringhe (CRT)

memcmp, wmemcmp

_memicmp, _memicmp_l

strcmp, wcscmp, _mbscmp

funzioni di 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