String arama
- C++ kursu
- Başlangıç
- Ders 34/116
- 5 dk
.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
#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
#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
std::string s = "Merhaba";
int pos = s____("ba");
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?
std::string s = "Merhaba";
s.find("xy")- -1
- 0
- std::string::npos Doğru cevap
- ""
Açıklama: Bulunamayınca std::string::npos döner.