_stricmp, _wcsicmp, _mbsicmp, _stricmp_l, _wcsicmp_l, _mbsicmp_l
Dizeleri büyük küçük harf duyarsız bir karşılaştırma gerçekleştirir.
Önemli |
---|
_mbsicmpve _mbsicmp_l Windows çalışma zamanı yürütme uygulamalarda kullanılamaz.Daha fazla bilgi için /ZW ile desteklenmiyor CRT işlevleri. |
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
);
Parametreler
string1, string2
Karşılaştırma yapılacak sonlandırılmış dizeleri.locale
Kullanılacak yerel ayar.
Dönüş Değeri
Dönüş değeri ilişkisi gösteren string1 için string2 şekildedir.
Dönüş değeri |
Açıklama |
---|---|
< 0 |
string1 küçüktür string2 |
0 |
string1 aynı string2 |
> 0 |
string1 büyüktür string2 |
Bir hata _mbsicmp döndürür _NLSCMPERROR, tanımlandığı < string.h içinde > ve < mbstring.h >.
Notlar
_stricmp İşlev ordinally karşılaştırır string1 ve string2 sonra her karakter küçük ve döndürür dönüştürme ilişkilerini belirten bir değer._stricmpfarklı _stricoll , _stricmp karşılaştırma tarafından etkilenen yalnızca LC_CTYPE, büyük ve küçük hangi karakterlerdir belirler._stricoll İşlevi karşılaştırır göre her ikisini dizeleri LC_CTYPE ve LC_COLLATE durum hem harmanlama sırası içerir yerel kategorisi.Hakkında daha fazla bilgi için LC_COLLATE kategorisi, bakın setlocale ve yerel ayar kategorileri.Bu işlevler sürümlerini _l soneki geçerli yerel ayarı için yerel ayar-bağımlı davranışı kullanın.Bunun yerine geçirilen yerel kullanmasını dışında sürümleri soneki ile aynıdır.Yerel ayarlanmadıysa, C yerel kullanılır.Daha fazla bilgi için bkz. Yerel Ayar.
[!NOT]
_stricmp ile _strcmpi eşdeğerdedir.Birbirinin yerine kullanılabilir ancak _stricmp tercih edilen standart'tır.
_strcmpi İşlevi eşdeğerdir _stricmp ve yalnızca geriye dönük uyumluluk için sağlanır.
Çünkü _stricmp karşılaştırmalarıyla, küçük harf beklenmeyen davranışa neden olabilir.
Ne zaman göstermek için case dönüştürme _stricmp sonucu etkiler karşılaştırmasını, iki dizeyi JOHNSTON ve JOHN_HENRY olduğunu varsayar.Dize JOHN_HENRY olarak kabul ' den küçük JOHNSTON "_" küçük s daha düşük bir ASCII değer olduğundanGerçekte ASCII değeri 91 96 arasındaki sahip herhangi bir karakter küçüktür herhangi bir harf olarak kabul edilecek.
Varsa strcmp işlevi yerine kullanılır _stricmp, JOHN_HENRY JOHNSTON büyük olacaktır.
_wcsicmpve _mbsicmp geniş karakter ve çok baytlı karakter sürümleridir _stricmp.Bağımsız değişkenleri ve dönüş değerini _wcsicmp geniş karakter dizelerdir; içeriğiyle _mbsicmp çok baytlı karakter dizelerdir._mbsicmpGeçerli çoklu bayt kod sayfası göre çok baytlı karakter sıraları tanır ve döndürür _NLSCMPERROR bir hata.Daha fazla bilgi için kod sayfaları.Bu üç işlevler aynı şekilde aksi davranır.
_wcsicmpve wcscmp dışında aynı şekilde davranır wcscmp bağımsız değişkenlerini karşılaştırma önce küçük harfe dönüştürmez._mbsicmpve _mbscmp dışında aynı şekilde davranır _mbscmp bağımsız değişkenlerini karşılaştırma önce küçük harfe dönüştürmez.
Çağırmanız gerekir setlocale için _wcsicmp Latin 1 karakter ile çalışmak için.C yerel yürürlükte varsayılan olarak, bu nedenle, örneğin, ä Ä eşit karşılaştırma değil olur.Arama setlocale çağırmadan önce C yerel dışında herhangi bir yerel ayarı ile _wcsicmp.Aşağıdaki örnek gösterir nasıl _wcsicmp için yerel duyarlıdır:
// 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
}
Çağrılacak alternatiftir _create_locale, _wcreate_locale geçirirsiniz döndürülen yerel ayar nesnesi bir parametresi olarak _wcsicmp_l.
Tüm bu işlevleri parametrelerini doğrulayın.string1 Veya string2 null işaretçileri olan açıklandığı gibi geçersiz parametre işleyici çağrılır Parametre Doğrulama .Yürütme devam etmek için izin verilip verilmediğini, bu işlevler dönmek _NLSCMPERROR ve errno için EINVAL.
Genel Metin Yordam Eşleşmeleri
TCHAR.H yordamı |
_UNICODE & _MBCS tanımlanmamış |
_MBCS tanımlanmış |
_UNICODE tanımlanmış |
---|---|---|---|
_tcsicmp |
_stricmp |
_mbsicmp |
_wcsicmp |
Gereksinimler
Yordam |
Gerekli başlık |
---|---|
_stricmp, _stricmp_l |
< string.h > |
_wcsicmp, _wcsicmp_l |
< string.h > veya < wchar.h > |
_mbsicmp, _mbsicmp_l |
< mbstring.h > |
Uyumluluk ek bilgi için bkz Uyumluluk.
Örnek
// 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 );
}
.NET Framework Eşdeğeri
Ayrıca bkz.
Başvuru
strncmp, wcsncmp, _mbsncmp, _mbsncmp_l
_strnicmp, _wcsnicmp, _mbsnicmp, _strnicmp_l, _wcsnicmp_l, _mbsnicmp_l
strrchr, wcsrchr, _mbsrchr, _mbsrchr_l