Cara membahagi rentetan dalam C ++

How Split String C



Bekerja dengan data rentetan adalah bahagian penting dari sebarang bahasa pengaturcaraan. Kadang kala kita perlu membahagikan data rentetan untuk tujuan pengaturcaraan. Fungsi split () wujud dalam banyak bahasa pengaturcaraan untuk membahagi rentetan menjadi beberapa bahagian. Tidak ada fungsi split () terbina dalam C ++ untuk membelah rentetan tetapi terdapat banyak cara di C ++ untuk melakukan tugas yang sama, seperti menggunakan garis panduan () fungsi, strtok () fungsi, menggunakan cari() dan padam () fungsi, dan lain-lain. Penggunaan fungsi ini untuk memisahkan rentetan dalam C ++ telah dijelaskan dalam tutorial ini.

Pra-syarat

Sebelum memeriksa contoh tutorial ini, anda harus memeriksa penyusun g ++ yang terpasang atau tidak dalam sistem. Sekiranya anda menggunakan Visual Studio Code, maka pasangkan sambungan yang diperlukan untuk menyusun kod sumber C ++ untuk membuat kod yang dapat dilaksanakan. Di sini, aplikasi Visual Studio Code telah digunakan untuk menyusun dan melaksanakan kod C ++.







Rentetan terbelah menggunakan fungsi getline ()

Fungsi getline () digunakan untuk membaca watak dari rentetan atau kandungan fail sehingga pembatas atau pemisah tertentu dijumpai dan menyimpan setiap rentetan parse ke pemboleh ubah rentetan yang lain. Fungsi akan meneruskan tugas sehingga kandungan penuh rentetan atau fail diuraikan. Sintaks fungsi ini diberikan di bawah.



Sintaks:



istream&garis panduan(istream&adalah, tali&str,charpersempadanan);

Di sini, parameter pertama, isstream, adalah objek dari mana watak akan diekstrak. Parameter kedua adalah pemboleh ubah rentetan yang akan menyimpan nilai yang diekstrak. Parameter ketiga digunakan untuk menetapkan pembatas yang akan digunakan untuk mengekstrak rentetan.





Buat fail C ++ dengan kod berikut untuk memisahkan rentetan berdasarkan pembatas ruang menggunakan garis panduan () fungsi. Nilai rentetan dari beberapa kata telah ditetapkan ke dalam pemboleh ubah, dan ruang telah digunakan sebagai pemisah. Pemboleh ubah vektor telah dinyatakan untuk menyimpan perkataan yang diekstrak. Seterusnya, gelung ‘for’ telah digunakan untuk mencetak setiap nilai dari array vektor.

// Sertakan perpustakaan yang diperlukan
#sertakan
#sertakan
#sertakan
#sertakan

intutama()
{
// Tentukan data rentetan yang akan dibelah
Jam::talistrData= 'Belajar Pengaturcaraan C ++';
// Tentukan data kontan yang akan berfungsi sebagai pembatas
penyambung charpemisah= '';
// Tentukan pemboleh ubah rentetan dinamik bagi rentetan
Jam::vektoroutputArray;
// Bentukkan aliran dari rentetan
Jam::aliran talialiranData(strData);
/ *
Menyatakan pemboleh ubah rentetan yang akan digunakan
untuk menyimpan data setelah berpecah
* /

Jam::talijam;
/ *
Gelung akan mengulang data terpecah dan
masukkan data ke dalam larik
* /

sementara (Jam::garis panduan(streamData, val, pemisah)) {
outputArray.menolak kembali(jam);
}
// Cetak data terpecah
Jam::kos << 'Rentetan asal ialah:' <<strData<<Jam::endl;
// Baca susunan dan cetak data terbelah
Jam::kos << ' nNilai setelah membelah rentetan berdasarkan ruang: ' <<Jam::endl;
untuk (kereta &jam:outputArray) {
Jam::kos <<jam<<Jam::endl;
}
kembali 0;
}

Pengeluaran:



Output berikut akan muncul setelah melaksanakan kod di atas.

Rentetan rentetan menggunakan fungsi strtok ()

Fungsi strtok () dapat digunakan untuk memisahkan rentetan dengan menandakan bahagian rentetan berdasarkan pembatas. Ia mengembalikan penunjuk ke token seterusnya jika ada; jika tidak, ia mengembalikan nilai NULL. The tali.h fail header diperlukan untuk menggunakan fungsi ini. Gelung memerlukan bacaan semua nilai yang terbelah dari rentetan. Argumen pertama mengandungi nilai rentetan yang akan dihuraikan, dan argumen kedua mengandungi pembatas yang akan digunakan untuk menghasilkan token. Sintaks fungsi ini diberikan di bawah.

Sintaks:

char * strtok ( char *str,penyambung char *pembatas);

Buat fail C ++ dengan kod berikut untuk memisahkan rentetan dengan menggunakan fungsi strtok (). Pelbagai watak didefinisikan dalam kod yang mengandungi titik dua (‘:’) sebagai pemisah. Seterusnya, strtok () fungsi dipanggil dengan nilai rentetan dan pembatas untuk menghasilkan token pertama. The ‘ sementara Gelung didefinisikan untuk menghasilkan token lain dan nilai token sehingga BULAN nilai dijumpai.

// Sertakan perpustakaan yang diperlukan
#sertakan
#sertakan

intutama()
{
// Menyatakan pelbagai watak
charstrArray[] = 'Mehrab Hossain: Profesional IT: [dilindungi e-mel]: +8801726783423';
// Kembalikan nilai token pertama berdasarkan ':'
char *nilai token= strtok(StrArray,':');
// Memulakan pemboleh ubah pembilang
intkaunter= 1;
/ *
Ulangi gelung untuk mencetak nilai token
dan membahagikan data rentetan yang tinggal untuk mendapatkan
nilai token seterusnya
* /

sementara (nilai token!= BULAN)
{
sekiranya(kaunter== 1)
printf('Nama:% s n', nilai token);
yang lain sekiranya(kaunter== 2)
printf('Pekerjaan:% s n', nilai token);
yang lain sekiranya(kaunter== 3)
printf('E-mel:% s n', nilai token);
yang lain
printf('No. Mudah Alih:% s n', nilai token);
nilai token= strtok(BULAN,':');
kaunter++;
}
kembali 0;
}

Pengeluaran:

Output berikut akan muncul setelah melaksanakan kod di atas.

Rentetan rentetan menggunakan fungsi find () dan delete ()

Rentetan dapat dibahagi dalam C ++ dengan menggunakan fungsi find () dan erase (). Buat fail C ++ dengan kod berikut untuk memeriksa penggunaan fungsi find () dan erase () untuk memisahkan nilai rentetan berdasarkan pembatas tertentu. Nilai token dihasilkan dengan mencari kedudukan pembatas dengan menggunakan fungsi find (), dan nilai token akan disimpan setelah mengeluarkan pembatas dengan menggunakan fungsi erase (). Tugas ini akan diulang sehingga kandungan penuh rentetan diuraikan. Seterusnya, nilai array vektor akan dicetak.

// Sertakan perpustakaan yang diperlukan
#sertakan
#sertakan
#sertakan

intutama(){
// Tentukan rentetan
Jam::talirentetanData= 'Bangladesh dan Jepun dan Jerman dan Brazil';
// Tentukan pemisah
Jam::talipemisah= 'dan';
// Menyatakan pemboleh ubah vektor
Jam::vektornegara{};
// Menyatakan pemboleh ubah integer
intkedudukan;
// Menyatakan pemboleh ubah rentetan
Jam::talioutstr, token;

/ *
Pisahkan rentetan menggunakan fungsi substr ()
dan menambahkan kata terbelah ke dalam vektor
* /

sementara ((kedudukan=rentetanData.cari(pemisah)) !=Jam::tali::npos) {
token=rentetanData.substrat(0, kedudukan);
// Keluarkan ruang tambahan dari bahagian depan tali yang terbelah
negara.menolak kembali(token.padam(0, token.cari_first_not_of('')));
rentetanData.padam(0, kedudukan+pemisah.panjang());
}
// Cetak semua perkataan terpecah kecuali yang terakhir
untuk (penyambung kereta &tali luar:negara) {
Jam::kos <<tali luar<<Jam::endl;
}
// Cetak kata terbelah terakhir
Jam::kos <<rentetanData.padam(0, stringData.cari_first_not_of('')) <<Jam::endl;
kembali 0;
}

Pengeluaran:

Output berikut akan muncul setelah melaksanakan kod di atas.

Kesimpulannya

Tiga cara berbeza untuk memisahkan rentetan dalam C ++ telah dijelaskan dalam tutorial ini dengan menggunakan contoh mudah untuk membantu pengguna python baru untuk melakukan operasi pemisahan dengan mudah di C ++.