C++'da dize nasıl karşılaştırılır

How Compare String C



Dizeleri karşılaştırmak, herhangi bir programlama dili için çok yaygın bir görevdir. Esas olarak, giriş bilgilerinin kullanıcı adını ve şifresini kontrol etmek gibi verileri doğrulamak için kullanılır. Dizi karşılaştırması, bir karşılaştırma operatörü veya yerleşik işlevler kullanılarak yapılabilir. C++'da kullanılan iki dizi karşılaştırma işlevi, strcmp() ve karşılaştırmak() . NS strcmp() iki dizeyi karşılaştırmak için C'nin bir kitaplık işlevidir. c karşılaştırma () iki dizeyi karşılaştırmak için yerleşik bir C++ işlevidir. Bu öğreticide, karşılaştırma işleçlerini ve işlevlerini kullanarak dizeleri karşılaştırmanın yolları açıklanmıştır.

Ön koşul:

Bu öğreticinin örneklerini kontrol etmeden önce, sistemde g++ derleyicisinin kurulu olup olmadığını kontrol etmelisiniz. Visual Studio Code kullanıyorsanız, yürütülebilir kodu oluşturmak için C++ kaynak kodunu derlemek için gerekli uzantıları yükleyin. Burada, C++ kodunu derlemek ve yürütmek için Visual Studio Code uygulaması kullanılmıştır.







Dizeyi karşılaştırmak için Karşılaştırma Operatörünü kullanma:

C++'da dizeleri karşılaştırmanın en yaygın yolu karşılaştırma operatörünü kullanmaktır. Bunlar eşittir (==) ve eşit değil (!=) operatörleridir. Karşılaştırma operatörünü kullanarak iki dize değerini karşılaştırmak için aşağıdaki kodla bir C++ dosyası oluşturun. Koda göre, kullanıcıdan bir URL adresi alınacak ve eşittir (==) operatörü kullanılarak diğer dizelerle karşılaştırılacaktır. Girilen değer, 'if' koşulunun herhangi bir dizesiyle eşleşirse, belirli mesaj yazdırılır; aksi takdirde, 'else' bölümünün mesajı görüntülenecektir.



//Gerekli kitaplığı dahil et

#Dahil etmek

ad alanı std'yi kullanma;

() {
// Bir dize değişkeni tanımla
dizi url_addr;
// Kullanıcıdan bir url adresi al
maliyeturl_addr;
// Eşdeğer operatörü kullanarak giriş değerini başka bir dizeyle karşılaştırın
Eğer(url_addr== 'Google com')
maliyet<<'Bu bir arama motoru wensite.'<<son;
başka türlü(url_addr== 'jooble.org')
maliyet<<'Bu bir iş arama sitesidir.'<<son;
başka türlü(url_addr== 'linuxhint.com')
maliyet<<'Bu bir blog sitesidir.'<<son;
Başka
maliyet<<'Bu site için hiçbir bilgi eklenmedi.'<<son;

dönüş0;
}

Çıktı:



Kodu yürüttükten sonra, kullanıcı ' linuxhint.com ' girdi olarak, üçüncü 'if' koşulu döndürülecek NS, ve aşağıdaki çıktı görünecektir.





Dizeyi karşılaştırmak için karşılaştırma () işlevini kullanma:

karşılaştırma () işlevi iki dizeyi karşılaştırır ve karşılaştırmanın eşleşen sonucuna göre 0 veya 1 veya -1 döndürür. Dönüş değerlerinin anlamı aşağıda verilmiştir.



  • Her iki karşılaştırma dizesi de eşit olduğunda işlev 0 döndürür.
  • İlk dize ikinci dizeden büyük olduğunda işlev 1 değerini döndürür.
  • İlk dize ikinci dizeden küçük olduğunda işlev -1 değerini döndürür.

Sözdizimi:

intdize1.karşılaştırmak(dize2)

Karşılaştırma () işlevini kullanarak iki dize değerini iki giriş değeriyle karşılaştırmak için aşağıdaki kodla bir C++ dosyası oluşturun. Herhangi bir kullanıcının kimlik doğrulaması, kullanıcılar tarafından gönderilen değerler ile kimliği doğrulanmış kullanıcının değerleri karşılaştırılarak kontrol edilebilir. Bu kimlik doğrulama işlemi aşağıdaki kodda uygulanmıştır. Geçerli e-posta adresi ve parola, burada iki dize değişkeninde saklanmıştır. Daha sonra bu değerler kullanıcıdan alınan e-posta adresi ve şifre ile karşılaştırılmıştır. karşılaştırmak () işlev. mantıksal VE operatörü, kullanıcının kimliğini doğrulamak için kodda kullanılmıştır. Her iki karşılaştırma () işlevi de True döndürürse başarı mesajı yazdırılacaktır. Aksi takdirde, hata mesajı yazdırılacaktır.

//Gerekli kitaplığı dahil et

#Dahil etmek

ad alanı std'yi kullanma;

() {

//İki dize değişkenini başlat
dize e-postası(' [e-posta korumalı]');
dize şifresi('linuxhint');
//İki string değişkeni bildir
string user_email;
string user_password;

//Kullanıcıdan e-posta adresini al
maliyetKullanıcı e-postası;

//Kullanıcıdan şifreyi al
maliyetKullanıcı şifresi;

//Kullanıcı adını ve parolanın geçerli veya geçersiz olup olmadığını kontrol edin
Eğer (Kullanıcı e-postası.karşılaştırmak(e-posta) == 0&&Kullanıcı şifresi.karşılaştırmak(parola) == 0 )
maliyet<<'Kimlik Doğrulama Başarılı.'<<son;
Başka
maliyet<<'E-posta veya şifre geçersiz.'<<son;

dönüş0;
}

Çıktı:

Kodu yürüttükten sonra, kullanıcı ' [e-posta korumalı] ' e-posta adresi olarak ve' 12345 ' şifre olarak, üçüncü 'if' koşulu döndürülecek YANLIŞ, ve aşağıdaki çıktı görünecektir.

Kodu tekrar çalıştırdıktan sonra, kullanıcı ' [e-posta korumalı] ' e-posta adresi olarak ve' linux ipucu ' şifre olarak, üçüncü 'if' koşulu döndürülecek NS, ve aşağıdaki çıktı görünecektir.

Dizeyi karşılaştırmak için strcmp() işlevini kullanma:

strcmp(), C++'da dizeleri karşılaştırmak için başka bir işlevdir. Her iki karşılaştırma dizesi de eşitse true değerini döndürür. Bu işlev tarafından alınan girdi parametreleri, karşılaştırma() işlevinden farklıdır. Karşılaştırma işlevi parametre olarak bir dize değeri alır ve strcmp() işlevi parametre olarak char dizisini alır. Bu işlevin sözdizimi aşağıda verilmiştir.

Sözdizimi:

int strcmp ( const karakter *str1, const karakter *str2);

strcmp() işlevini kullanarak iki dizeyi karşılaştırmak için aşağıdaki kodla bir C++ dosyası oluşturun. Kullanıcılar tarafından alınan dize değerlerini saklamak için kodda 100 elemanlı iki karakter dizisi bildirilmiştir. NS hat almak() işlev, kullanıcının girdisini char dizisi değişkenlerine depolamak için kullanılır. Daha sonra, strcmp() işlevi, giriş değerlerinin eşit olup olmadığını kontrol etmek için kullanılır. fonksiyon dönerse NS, ardından başarı mesajı yazdırılacaktır; aksi takdirde hata mesajı yazdırılacaktır,

//Gerekli kitaplıkları dahil et

#Dahil etmek

#Dahil etmek

ad alanı std'yi kullanma;

() {
//İki string değişkeni tanımla
karakterchrData1[100],chrData2[100];

//İlk string verisini al
maliyet<<'İlk dizeyi girin:';
cin.hat almak(chrData1, 100);
//İkinci dize verilerini al
maliyet<<'İkinci dizeyi girin:';
cin.hat almak(chrData2, 100);

Eğer ( strcmp (chrData1,chrData2)==0)
baskı ('İpler eşit ');
Başka
baskı ('Dizeler eşit değil ');

dönüş0;
}

Çıktı:

Kodu yürüttükten sonra, dize değeri, ' Merhaba ' her iki giriş değeri için verilir ve aşağıdaki çıktı görünecektir.

Çözüm:

Bu öğreticide, üç basit örnek kullanılarak C++'da dizeleri karşılaştırmanın üç yolu gösterilmiştir. Yeni C++ programcılarına yardımcı olmak için bu öğreticide hem karşılaştırma operatörünün hem de dizelerin eşitliğini kontrol etmek için yerleşik işlevlerin kullanımları açıklanmıştır.