Rentetan C++ Mengandungi Subrentetan

Rentetan C Mengandungi Subrentetan



Dalam C++, kami mempunyai jenis data rentetan dan boleh menggunakan fungsi yang berbeza untuk melakukan pelbagai tugas dengan rentetan. Kita boleh menyemak sama ada subrentetan hadir di dalam rentetan asal. Kita juga boleh mengatakan bahawa 'rentetan mengandungi subrentetan'. Dalam panduan ini, kami akan mempelajari teknik yang membantu kami mencari 'rentetan mengandungi subrentetan'. Fungsi 'find()' dan 'strstr()' membantu kami dalam melakukan tugas ini dalam pengaturcaraan C++.

Contoh 1:

'iostream' dan 'string' ialah fail pengepala yang disertakan di sini kerana kita perlu bekerja dengan rentetan dan juga perlu memasukkan atau mengeluarkan data. Jadi, kita mesti memasukkan fail pengepala ini di sini. Selepas ini, kami memasukkan 'ruang nama std' dengan bantuan kata kunci 'menggunakan'. Jadi, kami tidak perlu meletakkan 'std' ini dengan semua fungsi secara berasingan dalam kod kami. Kemudian, fungsi 'utama()' digunakan di sini.







Sekarang, kami mengisytiharkan rentetan 'str_1' dan memberikan beberapa data rentetan kepada pembolehubah ini. Kemudian, kami juga memulakan pembolehubah lain bernama 'str_2' daripada jenis data 'rentetan' dan menetapkan 'suka' kepada pembolehubah 'str_2' ini. Di bawah ini, kami menggunakan kata kunci 'bool' untuk memberikan hasil yang benar atau palsu. Kami memulakan 'stringHasStr' dengan jenis data 'bool' ini dan menggunakan fungsi 'find()'. Ini mencari 'rentetan mengandungi subrentetan'. 'str_1' ialah rentetan lengkap dan 'str_2' ialah subrentetan.



Di sini, kami juga menambah kata kunci 'npos' yang digunakan untuk menunjukkan bahawa tiada padanan dalam rentetan ini. Ia menyemak sama ada rentetan mengandungi subrentetan dan menyimpan hasilnya dalam pembolehubah bool 'stringHasStr' ini.



Kemudian, kami bergerak ke hadapan ke arah keadaan 'jika' dan lulus pembolehubah 'stringHasStr' ini kepada keadaan 'jika' ini. Jika hasil yang disimpan dalam pembolehubah bool ini adalah 'benar', pernyataan selepas keadaan 'jika' ini digunakan di mana kita menggunakan 'cout' dan memaparkan rentetan yang terdapat di sini. Tetapi jika hasil 'palsu' disimpan dalam pembolehubah bool ini, bahagian lain digunakan dan memaparkan bahawa rentetan itu tidak ditemui di sini.





Kod 1:

#include
#include

menggunakan ruang nama std;
int utama ( )
{
rentetan str_1 = 'Saya suka bahasa pengaturcaraan C++' ;
rentetan str_2 = 'suka' ;
bool stringHasStr = str_1.find ( str_2 ) ! = rentetan::npos;
jika ( stringHasStr ) {
cout << 'Kami dapati rentetan di sini iaitu ' << str_2 << endl;
}
lain {
cout << 'String tidak ditemui' << endl;
}
kembali 0 ;
}



Pengeluaran:

Output yang diberikan ini menjadikan rentetan itu mengandungi subrentetan dan memaparkannya di sini. Kami menyemak ini dengan menggunakan fungsi 'find()'.

Contoh 2:

Kami menyertakan tiga fail pengepala di sini iaitu 'iostream', 'string' dan 'cstring'. Kemudian, gunakan 'utama()' selepas meletakkan 'ruang nama std'. Rentetan 'new_str' kini diisytiharkan dan beberapa data rentetan diberikan.

Seterusnya, kami memulakan pembolehubah kedua jenis data 'rentetan' yang dipanggil 'sub_str' dan memberikannya nilai 'sangat'. Kemudian, kami meletakkan 'const char*'. Jadi, menukar nilai penuding untuk menunjuk ke lokasi lain dalam ingatan adalah mustahil. Kami mengisytiharkan pembolehubah 'FindingStr' sebagai penunjuk 'const char*' di sini. Kami memulakannya dengan kaedah 'strstr()' dan lulus kedua-dua rentetan bersama-sama dengan fungsi 'c_str()' yang mengubah rentetan menjadi tatasusunan aksara yang berakhir dengan nilai nol. Kaedah 'strstr()' ini membantu dalam menyemak sama ada rentetan 'new_str' mengandungi subrentetan 'sub_str' atau tidak. Kemudian, kami mempunyai 'jika' di mana kami menambah 'FindingStr'. Jika ia menemui subrentetan dalam asal, pernyataan selepas 'jika' dilaksanakan di mana kami menggunakan 'cout'. Jika subrentetan tidak ditemui, ia terus bergerak ke arah bahagian 'lain' dan mencetak hasil yang diletakkan selepas bahagian 'lain'.

Kod 2:

#include
#include
#include

menggunakan ruang nama std;
int utama ( )
{
rentetan new_str = 'Hujan di luar dan cuaca sangat menyenangkan.' ;
rentetan sub_str = 'sangat' ;
const char * FindingStr = strstr ( new_str.c_str ( ) , sub_str.c_str ( ) ) ;
jika ( FindingStr ) {
cout << 'Kami dapati String dan rentetannya ialah: ' << sub_str << endl;
}
lain {
cout << 'Rentetan tidak ditemui' << endl;
}
kembali 0 ;
}

Pengeluaran:

Kami mungkin mendapati bahawa rentetan yang diberikan mengandungi subrentetan kerana ia memaparkan pernyataan yang kami tambah selepas 'jika' dan mencetak subrentetan di sini. Kami menyemak ini dengan menggunakan fungsi 'strstr()'.

Contoh 3:

Kami memulakan dua pembolehubah rentetan di sini: 'myNewStr' dan 'mySubStr'. Kemudian, kami menetapkan beberapa data rentetan dan mengisytiharkan dua pembolehubah integer: 'posOfStr' dan 'indexOfStr'.

Di bawah ini, kami menggunakan gelung 'while()' dan menetapkan pembolehubah fungsi 'find()' kepada pembolehubah 'indexOfStr' di dalam gelung 'while()' ini. Kami menghantar dua pembolehubah kepada fungsi 'find()' ini iaitu 'mySubStr' dan 'posOfStr'. Kemudian, kami meletakkan kata kunci 'npos' yang menyemak bahawa hasil fungsi 'cari' tidak sama dengan 'npos'. Selepas ini, kami menggunakan 'cout' yang menambah nilai indeks sebanyak satu dan menyimpannya dalam pembolehubah 'posOfStr'.

Kod 3:

#include
#include

menggunakan ruang nama std;
int utama ( ) {
rentetan myNewStr = 'kami mencari rentetan di sini' ;
rentetan mySubStr = 'tali' ;
int posOfStr = 0 ;
int indexOfStr;
sementara ( ( indexOfStr = myNewStr.find ( mySubStr, posOfStr ) ) ! = rentetan::npos ) {
cout << 'Subrentetan ialah' << ''' << mySubStr << ''' << ' Ditemui pada nombor indeks : ' << indexOfStr << endl;
posOfStr = indexOfStr + 1 ;
}
kembali 0 ;
}

Pengeluaran:

Di sini, ia menunjukkan bahawa rentetan yang diberikan mengandungi subrentetan dan nombor indeks rentetan ini ialah '19' yang turut dipaparkan dalam hasil ini.

Contoh 4:

Dalam kod ini, kami memasukkan fail pengepala 'bits/stdc++.h'. Sekarang, kami tidak perlu memasukkan fail pengepala lain kerana ia mengandungi semua perpustakaan yang diperlukan. Selepas menggunakan 'main()', kami memulakan pembolehubah 'org_str' dan 'sub_str' bagi jenis data 'rentetan'. Kemudian, kami menambah keadaan 'jika' di mana kami menggunakan fungsi 'strstr()'. Fungsi ini mencari untuk melihat sama ada rentetan yang diberikan mengandungi subrentetan yang dikehendaki. Kemudian, kami menambah pernyataan 'cout' untuk mencetak bahawa subrentetan ditemui di sini. Kemudian, kami juga meletakkan bahagian 'lain' yang dilaksanakan hanya apabila keadaan 'jika' tidak berpuas hati atau subrentetan tidak ditemui dalam rentetan.

Selepas ini, kami mengisytiharkan pembolehubah 'sub_str2' dan menetapkan data rentetan di sini. Keadaan 'jika' kemudiannya dimasukkan, dan fungsi 'strstr()' digunakan. Kaedah ini mencari sama ada rentetan yang dibekalkan mengandungi subrentetan yang diminta atau tidak. Hasilnya kemudian dicetak di sini menggunakan perintah 'cout'. Kami juga menyertakan bahagian 'lain' yang hanya dijalankan jika syarat 'jika' tidak dipenuhi atau jika subrentetan tidak boleh terdapat dalam rentetan.

Kod 4:

#include
menggunakan ruang nama std;
int utama ( ) {
rentetan org_str = 'Bahasa Pengaturcaraan C++' ;
rentetan sub_str = 'Program' ;
jika ( strstr ( org_str.c_str ( ) ,sub_str.c_str ( ) ) )
{
cout << 'Subrentetan di sini ialah' << ''' << sub_str << ''' << 'ada dalam' << org_str << endl;
}
lain {
cout << 'Subrentetan tiada dalam rentetan.' << endl;
}
rentetan sub_str2 = 'Jawa' ;

jika ( strstr ( org_str.c_str ( ) ,sub_str2.c_str ( ) ) )
{
cout << 'Subrentetan di sini ialah' << ''' << sub_str2 << ''' << 'ada dalam' << org_str << endl;
}
lain {
cout << 'Subrentetan tiada dalam rentetan ini.' << endl;
}
kembali 0 ;
}

Pengeluaran:

Hasil fungsi 'strstr()' pertama menunjukkan bahawa rentetan mengandungi subrentetan, tetapi hasil fungsi 'strstr()' kedua menunjukkan bahawa subrentetan tidak terdapat dalam rentetan.

Kesimpulan

Konsep 'rentetan mengandungi subrentetan' diperiksa dengan teliti dalam panduan ini. Kami meneroka dua kaedah yang membantu dalam mencari sama ada 'rentetan mengandungi subrentetan'. Kami menerangkan 'find()' serta fungsi 'strstr()' yang C++ sediakan di sini dalam panduan ini untuk melakukan tugas ini. Kami menunjukkan dengan contoh unik di mana kami mempelajari cara menggunakan fungsi ini untuk menyemak sama ada 'rentetan mengandungi subrentetan' di dalamnya.