Skip to main content

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:

  1. Karşılaştırmak istediğiniz iki std::string değişkenini tanımlayın.
  2. == operatörüyle eşitliği, != operatörüyle farklılığı kontrol edin.
  3. 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)

  1. == operatörü mü yoksa compare() metodu mu daha hızlı?

Modern derleyicilerde fark yoktur. ==, okunabilirliği daha yüksek olduğu için önerilir.

  1. 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.

  1. strcmp() neden std::string ile kullanılamaz?

Çünkü strcmp() ham bellek adresleriyle çalışır. std::string ise soyut bir sınıftır.

  1. 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. ☁️