C++ String Karşılaştırma: 3 Güvenli ve Etkili Yöntem
🎯 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:
1️⃣ İlişkisel operatörler (==, !=)
2️⃣ std::string::compare() metodu
3️⃣ strcmp() fonksiyonu (C-stil diziler için)
Kod örnekleriyle, hangi yöntemin ne zaman kullanılacağını adım adım anlatıyoruz.
1️⃣ İ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.
2️⃣ 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.
3️⃣ 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::string nesneleriyle kullanılamaz.
⚖️ Karşılaştırma Yöntemlerinin Özeti Yöntem Tür Avantajı Kullanım Alanı == / != std::string En basit, okunabilir Eşitlik kontrolü compare() std::string Sözlük sıralaması yapabilir Sıralama / filtreleme strcmp() char* (C-stil) Düşük seviye C uyumu Eski kütüphaneler
❓ 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::string için: == veya compare()
🧱 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. ☁️