C++ Dizesi Bir Alt Dize İçerir

C Dizesi Bir Alt Dize Icerir



C++'da, dize veri türüne sahibiz ve dizelerle çeşitli görevleri gerçekleştirmek için farklı işlevleri uygulayabiliriz. Alt dizenin orijinal dizenin içinde olup olmadığını kontrol edebiliriz. Ayrıca “string'in alt stringi içerdiğini” de söyleyebiliriz. Bu kılavuzda “alt dizeyi içeren dizeyi” bulmamıza yardımcı olacak teknikleri öğreneceğiz. C++ programlamada “find()” ve “strstr()” fonksiyonları bu görevi yapmamıza yardımcı olur.

Örnek 1:

'iostream' ve 'string', dizelerle çalışmamız ve ayrıca veri girişi veya çıkışı yapmamız gerektiğinden buraya dahil edilen başlık dosyalarıdır. Dolayısıyla bu başlık dosyalarını buraya eklemeliyiz. Bundan sonra “using” anahtar kelimesi yardımıyla “namespace std”yi dahil ediyoruz. Dolayısıyla bu “std”yi tüm işlevlerle birlikte kodumuza ayrı ayrı koymamıza gerek yok. Daha sonra burada “main()” fonksiyonu çağrılır.







Şimdi “str_1” stringini deklare ediyoruz ve bu değişkene bazı string verileri atadık. Daha sonra “string” veri türünden “str_2” isimli başka bir değişkeni de başlatıyoruz ve bu “str_2” değişkenine “like” atadık. Bunun altında doğru veya yanlış sonuç vermek için “bool” anahtar kelimesini kullanıyoruz. Bu “bool” veri türü ile “stringHasStr”i başlatıyoruz ve “find()” fonksiyonunu kullanıyoruz. Bu, 'alt dizeyi içeren dizeyi' arar. “str_1” tam dizedir ve “str_2” alt dizedir.



Burada bu stringte eşleşme olmadığını göstermek için kullanılan “npos” anahtar kelimesini de ekliyoruz. Dizenin bir alt dize içerip içermediğini kontrol eder ve sonucu bu 'stringHasStr' bool değişkeninde saklar.



Daha sonra “if” koşuluna doğru ilerleyerek bu “stringHasStr” değişkenini bu “if” koşuluna aktarıyoruz. Bu bool değişkeninde saklanan sonuç 'true' ise, bu 'if' koşulundan sonraki ifade kullanılır; burada 'cout' kullanılır ve burada bulunan dize görüntülenir. Ancak bu bool değişkeninde “false” sonucu saklanıyorsa diğer kısım kullanılır ve stringin burada bulunmadığı gösterilir.





Kod 1:

#include
#include

ad alanı std'sini kullanma;
int ana ( )
{
dize str_1 = 'C++ programlama dilini seviyorum' ;
dize str_2 = 'beğenmek' ;
bool stringHasStr = str_1.find ( str_2 ) ! = dize::npos;
eğer ( stringHasStr ) {
cout << 'Burada dizeyi buluyoruz' << str_2 << sonunda;
}
başka {
cout << 'Dize bulunamadı' << sonunda;
}
geri dönmek 0 ;
}



Çıktı:

Verilen bu çıktı, dizenin alt dizeyi içerdiğini işler ve onu burada görüntüler. Bunu “find()” fonksiyonunu kullanarak kontrol ediyoruz.

Örnek 2:

Buraya “iostream”, “string” ve “cstring” olmak üzere üç başlık dosyası ekliyoruz. Daha sonra “namespace std”yi yerleştirdikten sonra “main()”ı çağırın. Artık “new_str” dizesi bildirildi ve bazı dize verileri atandı.

Daha sonra “sub_str” adı verilen “string” veri türünden ikinci bir değişkeni başlatıyoruz ve ona “very” değerini veriyoruz. Daha sonra “const char*”ı yerleştiriyoruz. Dolayısıyla işaretçinin değerini hafızadaki diğer konuma işaret edecek şekilde değiştirmek imkansızdır. Burada “FindingStr” değişkenini bu “const char*” işaretçisi olarak bildiriyoruz. Bunu “strstr()” metodu ile başlatıyoruz ve her iki stringi de, bir stringi null değerle biten bir karakter dizisine dönüştüren “c_str()” fonksiyonu ile birlikte iletiyoruz. Bu 'strstr()' yöntemi, 'new_str' dizesinin 'sub_str' alt dizesini içerip içermediğini kontrol etmeye yardımcı olur. Daha sonra “FindingStr”i eklediğimiz “if” var. Eğer alt dizgeyi orijinalde bulursa, “cout”u kullandığımız yerde “if”ten sonraki ifade yürütülür. Alt dize bulunamazsa doğrudan “else” kısmına doğru hareket eder ve “else” kısmından sonra gelen sonucu yazdırır.

Kod 2:

#include
#include
#include

ad alanı std'sini kullanma;
int ana ( )
{
dize yeni_str = 'Dışarıda yağmur yağıyor ve hava çok güzel.' ;
dize alt_str = 'çok' ;
sabit karakter * BulmaStr = strstr ( new_str.c_str ( ) , sub_str.c_str ( ) ) ;
eğer ( BulmaStr ) {
cout << 'Dizeyi buluyoruz ve dize şöyle: ' << alt_str << sonunda;
}
başka {
cout << 'Dizin bulunamadı' << sonunda;
}
geri dönmek 0 ;
}

Çıktı:

Verilen dizenin, “if”ten sonra eklediğimiz ifadeyi görüntülediği ve alt dizeyi buraya yazdırdığı için alt dizeyi içerdiğini fark edebiliriz. Bunu “strstr()” fonksiyonunu kullanarak kontrol ediyoruz.

Örnek 3:

Burada iki dize değişkenini başlatıyoruz: “myNewStr” ve “mySubStr”. Daha sonra bazı string verileri atarız ve iki tamsayı değişkeni bildiririz: “posOfStr” ve “indexOfStr”.

Bunun altında ise “while()” döngüsünü kullanıyoruz ve bu “while()” döngüsünün içindeki “indexOfStr” değişkenine “find()” fonksiyon değişkenini atadık. Bu “find()” fonksiyonuna “mySubStr” ve “posOfStr” olmak üzere iki değişken aktarıyoruz. Daha sonra “find” fonksiyonunun sonucunun “npos”a eşit olup olmadığını kontrol eden “npos” anahtar sözcüğünü yerleştiriyoruz. Bundan sonra indeks değerini bir arttıran “cout”u kullanıyoruz ve bunu “posOfStr” değişkeninde saklıyoruz.

Kod 3:

#include
#include

ad alanı std'sini kullanma;
int ana ( ) {
dize benimYeniStr = 'burada ipi buluyoruz' ;
dize mySubStr = 'sicim' ;
int posOfStr = 0 ;
int indexOfStr;
sırasında ( ( indexOfStr = myNewStr.find ( mySubStr, posOfStr ) ) ! = dize::npos ) {
cout << 'Alt dize:' << ''' << mySubStr << ''' << ' Dizin numarasında bulundu : ' << indexOfStr << sonunda;
posOfStr = indexOfStr + 1 ;
}
geri dönmek 0 ;
}

Çıktı:

Burada verilen stringin alt stringi içerdiğini ve bu stringin indeks numarasının “19” olduğunu gösterir ki bu da sonuçta görüntülenir.

Örnek 4:

Bu kodun içerisine “bits/stdc++.h” başlık dosyasını dahil ediyoruz. Artık diğer başlık dosyalarını eklememize gerek yok çünkü bunlar gerekli tüm kitaplıkları içeriyor. “main()”i çağırdıktan sonra “string” veri tipinin “org_str” ve “sub_str” değişkenlerini başlatıyoruz. Daha sonra “strstr()” fonksiyonunu kullandığımız “if” koşulunu ekliyoruz. Bu işlev, verilen dizenin istenen alt dizeyi içerip içermediğini görmek için arama yapar. Daha sonra alt stringin burada bulunduğunu yazdırmak için “cout” ifadesini ekliyoruz. Daha sonra sadece “if” koşulu sağlanmadığında veya string içerisinde alt string bulunmadığında çalıştırılacak olan “else” kısmını da koyuyoruz.

Bundan sonra “sub_str2” değişkenini deklare edip buraya bir string verisi atadık. Daha sonra “if” koşulu eklenir ve “strstr()” işlevi kullanılır. Bu yöntem, sağlanan dizenin istenen alt dizeyi içerip içermediğini arar. Sonuç daha sonra 'cout' komutu kullanılarak buraya yazdırılır. Ayrıca yalnızca 'if' koşulunun karşılanmaması veya alt dizenin dizede bulunamaması durumunda çalıştırılacak bir 'else' bölümü de ekleriz.

Kod 4:

#include
ad alanı std'sini kullanma;
int ana ( ) {
dize org_str = 'C++ Programlama Dili' ;
dize alt_str = 'Program' ;
eğer ( strstr ( org_str.c_str ( ) ,sub_str.c_str ( ) ) )
{
cout << 'Buradaki Alt Dize' << ''' << alt_str << ''' << 'şunda mevcut' << org_str << sonunda;
}
başka {
cout << 'Dizede alt dize mevcut değil.' << sonunda;
}
dize sub_str2 = 'Java' ;

eğer ( strstr ( org_str.c_str ( ) ,sub_str2.c_str ( ) ) )
{
cout << 'Buradaki Alt Dize' << ''' << alt_str2 << ''' << 'şunda mevcut' << org_str << sonunda;
}
başka {
cout << 'Bu dizede alt dize mevcut değil.' << sonunda;
}
geri dönmek 0 ;
}

Çıktı:

İlk “strstr()” fonksiyonunun sonucu, dizenin alt dizeyi içerdiğini gösterir, ancak ikinci “strstr()” işlevinin sonucu, alt dizenin dizede bulunmadığını gösterir.

Çözüm

Bu kılavuzda “dize alt dizeyi içerir” kavramı ayrıntılı olarak incelenmiştir. 'Dizenin alt dizeyi içerip içermediğini' aramaya yardımcı olan iki yöntemi araştırdık. Bu kılavuzda bu görevi gerçekleştirmek için C++'ın sunduğu “find()” ve “strstr()” işlevlerini anlattık. 'Dizenin alt dizeyi içerip içermediğini' kontrol etmek için bu işlevleri nasıl kullanacağımızı öğrendiğimiz benzersiz örneklerle gösteriyoruz.