C++ String Karşılaştırma
Bu Rehberde Ne Öğreneceksiniz?
Bu rehberde, C++’ta iki metnin eşitliğini veya sözlük sırasına göre karşılaştırmasını nasıl yapacağınızı öğreneceksiniz.
3 temel yöntem öğreneceğiz:
- İlişkisel operatörler (
==,!=) std::string::compare()metodustrcmp()fonksiyonu (C-stil diziler için)
Kod örnekleriyle, hangi yöntemin ne zaman kullanılacağını adım adım anlatıyoruz.
İlişkisel Operatörler (== ve !=) — En Önerilen Yöntem
C++’ta std::string nesnelerini karşılaştırmanın en basit ve okunabilir yolu ilişkisel operatörlerdir.
Bu operatörler std::string sınıfı için aşırı yüklenmiştir ve doğrudan kullanılabilir.
Adımlar:
- Karşılaştırmak istediğiniz iki
std::stringdeğişkenini tanımlayın. ==operatörüyle eşitliği,!=operatörüyle farklılığı kontrol edin.- Karşılaştırma büyük/küçük harf duyarlıdır (case-sensitive).
#include <iostream>
#include <string>
using namespace std;
int main() {
string metin1 = "GirisToken123";
string metin2 = "GirisToken123";
string metin3 = "girisToken123"; // Küçük harfle başlıyor
if (metin1 == metin2)
cout << "Metin 1 ve Metin 2 eşit." << endl;
else
cout << "Metinler eşit değil." << endl;
if (metin1 != metin3)
cout << "Metin 1 ve Metin 3 farklı." << endl;
return 0;
}
- Bu yöntem, modern C++’ta en sık tercih edilen, okunabilirliği yüksek karşılaştırma yöntemidir.
std::string::compare() Metodu — Detaylı Sözlük Karşılaştırması
std::string::compare() metodu, yalnızca eşitliği değil, metinlerin sözlük sırasını da belirler.
Adımlar:
Birinci metin üzerinden compare() metodunu çağırın.
Parametre olarak ikinci metni verin.
Dönüş değerini kontrol edin.
Dönüş Değeri Anlamı 0 Metinler birebir aynı < 0 İlk metin sözlükte önce gelir
0 İlk metin sözlükte sonra gelir
#include <iostream>
#include <string>
using namespace std;
int main() {
string sunucu_adi1("tr-sunucu-a");
string sunucu_adi2("tr-sunucu-b");
int sonuc = sunucu_adi1.compare(sunucu_adi2);
if (sonuc == 0)
cout << "Metinler eşit." << endl;
else if (sonuc < 0)
cout << "Metin 1, Metin 2'den önce geliyor." << endl;
else
cout << "Metin 1, Metin 2'den sonra geliyor." << endl;
return 0;
}
- compare() metodu, özellikle sıralama algoritmalarında tercih edilir.
strcmp() Fonksiyonu — C-Stil Diziler için
strcmp(), C dilinden miras kalmış klasik bir karşılaştırma fonksiyonudur.
Yalnızca C-stil karakter dizileri (char*, char[]) ile çalışır.
Adımlar:
İki C-stil metin tanımlayın.
strcmp(str1, str2) fonksiyonunu çağırın.
Dönüş değerini kontrol edin (0, <0, >0).
#include <iostream>
#include <cstring> // strcmp için
using namespace std;
int main() {
const char *token1 = "rabisu.cloud";
const char *token2 = "rabisu.cloud";
if (strcmp(token1, token2) == 0)
cout << "C-stil metinler eşit." << endl;
else
cout << "C-stil metinler eşit değil." << endl;
return 0;
}
strcmp()sadece char* dizileriyle çalışır,std::stringnesneleriyle kullanılamaz.
Sıkça Sorulan Sorular (SSS)
==operatörü mü yoksacompare()metodu mu daha hızlı?
Modern derleyicilerde fark yoktur. ==, okunabilirliği daha yüksek olduğu için önerilir.
- Büyük/küçük harf duyarsız karşılaştırma nasıl yapılır?
Her iki metni de std::tolower() ile küçük harfe çevirip sonra karşılaştırabilirsiniz.
strcmp()nedenstd::stringile kullanılamaz?
Çünkü strcmp() ham bellek adresleriyle çalışır. std::string ise soyut bir sınıftır.
- Sadece belirli bir kısmı karşılaştırmak mümkün mü?
Evet. compare()’ın parametreli sürümü veya strncmp() kullanılabilir.
Sonuç
C++’ta metin karşılaştırması yaparken kullandığınız veri tipine göre yöntem seçmelisiniz:
-
std::stringiçin: == veyacompare() -
C-stil diziler için:
strcmp()
Kod okunabilirliği açısından == operatörü en sade ve güvenli seçenektir. Bu örnekleri hemen Rabisu Bulut platformunda test ederek pratik yapabilirsiniz.