CodeBlanks Logo Icon CodeBlanks

String arama

.find() ile dizede arama yapmayı öğrenirsin.

find metodu

Bir dize içinde başka bir dizeyi aramak için find metodunu kullanırsın. s.find("aranan") çağrısı, aranan dizenin ilk bulunduğu dizini döndürür. Bulamazsa std::string::npos döner.

Örneğin std::string s = "ankara izmir istanbul"; s.find("izmir") ifadesi 7 döndürür; çünkü "izmir" dizisi 7. dizinden başlar. Dizin sıfırdan sayılır ve boşluk da bir karakter olarak sayılır.

npos ile kontrol

find metodu aranan dizeyi bulamazsa std::string::npos döndürür. Bu, bulunamadı anlamına gelen özel bir sabittir. Bir dize içinde başka bir dizenin olup olmadığını kontrol etmek için şu kalıbı kullanırsın:

if (s.find("x") == std::string::npos) { /* bulunamadı */ }. Bu kalıp, kullanıcı girdisinde yasak kelime kontrolü veya dosya adında uzantı aramada çok işine yarar.

Uygulama Bir şehri ara

sentence değişkenine "ankara izmir istanbul", word değişkenine "izmir" değeri verilmiş. sentence.find(word) çağrısıyla dizini pos değişkenine ata ve std::cout ile yazdır. Çıktı 7 olmalı.

Başlangıç kodu

main.cpp
#include <iostream>
#include <string>

int main() {
    std::string sentence = "ankara izmir istanbul";
    std::string word = "izmir";
    // word'ü sentence içinde ara ve pos'a ata, sonra yazdır
    return 0;
}

Örnek çözüm

main.cpp
#include <iostream>
#include <string>

int main() {
    std::string sentence = "ankara izmir istanbul";
    std::string word = "izmir";
    int pos = sentence.find(word);
    std::cout << pos << std::endl;
    return 0;
}

Beklenen çıktı

7

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 find çağrısını yaz

Soru
std::string s = "Merhaba";
int pos = s____("ba");
Cevap
std::string s = "Merhaba";
int pos = s.find("ba");

Açıklama: .find("ba") 'ba' dizisinin dizinini verir.

2 find çağrısını sonucuna eşle

Kavram Anlamı
s.find("Mer") on "Merhaba" 0
s.find("ba") on "Merhaba" 5
s.find("xy") on "Merhaba" std::string::npos
s.find("erha") on "Merhaba" 1

3 find metodu aranan dizeyi bulamazsa ne döner?

main.cpp
std::string s = "Merhaba";
s.find("xy")
  • -1
  • 0
  • std::string::npos Doğru cevap
  • ""

Açıklama: Bulunamayınca std::string::npos döner.

Başlangıç bölümündeki tüm dersler