Cara membagi string dalam C++

How Split String C



Bekerja dengan data string adalah bagian penting dari bahasa pemrograman apa pun. Terkadang kita perlu membagi data string untuk tujuan pemrograman. Fungsi split() ada dalam banyak bahasa pemrograman untuk membagi string menjadi beberapa bagian. Tidak ada fungsi split() bawaan di C++ untuk memisahkan string tetapi banyak cara yang ada di C++ untuk melakukan tugas yang sama, seperti menggunakan getline() fungsi, strtok() fungsi, menggunakan Temukan() dan menghapus() fungsi, dll. Penggunaan fungsi-fungsi ini untuk memisahkan string dalam C++ telah dijelaskan dalam tutorial ini.

Prasyarat

Sebelum memeriksa contoh tutorial ini, Anda harus memeriksa apakah kompiler g++ sudah terpasang atau tidak di sistem. Jika Anda menggunakan Visual Studio Code, maka instal ekstensi yang diperlukan untuk mengkompilasi kode sumber C++ untuk membuat kode yang dapat dieksekusi. Di sini, aplikasi Visual Studio Code telah digunakan untuk mengkompilasi dan mengeksekusi kode C++.







Pisahkan string menggunakan fungsi getline()

Fungsi getline() digunakan untuk membaca karakter dari string atau konten file hingga pembatas atau pemisah tertentu ditemukan dan menyimpan setiap string parse ke variabel string lain. Fungsi akan melanjutkan tugas hingga konten lengkap dari string atau file diuraikan. Sintaks fungsi ini diberikan di bawah ini.



Sintaksis:



istream&getline(istream&adalah, string&str,arangpembatas);

Di sini, parameter pertama, mengalir, adalah objek dari mana karakter akan diekstraksi. Parameter kedua adalah variabel string yang akan menyimpan nilai yang diekstraksi. Parameter ketiga digunakan untuk mengatur pembatas yang akan digunakan untuk mengekstraksi string.





Buat file C++ dengan kode berikut untuk membagi string berdasarkan pembatas spasi menggunakan getline() fungsi. Nilai string dari beberapa kata telah ditetapkan ke dalam variabel, dan spasi telah digunakan sebagai pemisah. Sebuah variabel vektor telah dideklarasikan untuk menyimpan kata-kata yang diekstraksi. Selanjutnya, loop 'for' digunakan untuk mencetak setiap nilai dari array vektor.

//Sertakan perpustakaan yang diperlukan
#termasuk
#termasuk
#termasuk
#termasuk

ke dalamutama()
{
//Menentukan data string yang akan dipecah
jam::rangkaianstrData= 'Belajar Pemrograman C++';
//Tentukan data kontan yang akan digunakan sebagai pembatas
konstan arangpemisah= '';
//Mendefinisikan variabel array dinamis dari string
jam::vektorkeluaranArray;
//Membuat aliran dari string
jam::stringstreamaliranData(strData);
/ *
Deklarasikan variabel string yang akan digunakan
untuk menyimpan data setelah split
* /

jam::rangkaianjam;
/ *
Loop akan mengulangi data yang dipisah dan
masukkan data ke dalam array
* /

ketika (jam::getline(streamData, val, pemisah)) {
keluaranArray.push_back(jam);
}
//Mencetak data yang telah dipisah
jam::biaya << 'String aslinya adalah:' <<strData<<jam::akhir;
//Baca array dan cetak data yang dipisah
jam::biaya << ' Nilai setelah memisahkan string berdasarkan spasi:' <<jam::akhir;
untuk (mobil &jam:keluaranArray) {
jam::biaya <<jam<<jam::akhir;
}
kembali 0;
}

Keluaran:



Output berikut akan muncul setelah mengeksekusi kode di atas.

Pisahkan string menggunakan fungsi strtok()

Fungsi strtok() dapat digunakan untuk membagi string dengan menandai bagian dari string berdasarkan pembatas. Ini mengembalikan pointer ke token berikutnya jika ada; jika tidak, ia mengembalikan nilai NULL. NS string.h file header diperlukan untuk menggunakan fungsi ini. Sebuah loop akan membutuhkan membaca semua nilai yang dipisahkan dari string. Argumen pertama berisi nilai string yang akan diurai, dan argumen kedua berisi pembatas yang akan digunakan untuk menghasilkan token. Sintaks fungsi ini diberikan di bawah ini.

Sintaksis:

arang * strtok ( arang *str,konstan arang *pembatas);

Buat file C++ dengan kode berikut untuk memisahkan string dengan menggunakan fungsi strtok(). Array karakter didefinisikan dalam kode yang berisi titik dua (':') sebagai pemisah. Selanjutnya, strtok() fungsi dipanggil dengan nilai string dan pembatas untuk menghasilkan token pertama. NS ' ketika ' loop didefinisikan untuk menghasilkan token lain dan nilai token sampai BATAL nilai ditemukan.

//Sertakan perpustakaan yang diperlukan
#termasuk
#termasuk

ke dalamutama()
{
//deklarasikan array karakter
arangstrArray[] = 'Mehrab Hossain : Profesional TI : [dilindungi email] :+8801726783423';
//Mengembalikan nilai token pertama berdasarkan ':'
arang *nilai token= strtok(strArray,':');
//Inisialisasi variabel penghitung
ke dalammenangkal= 1;
/ *
Ulangi loop untuk mencetak nilai token
dan pisahkan data string yang tersisa untuk mendapatkan
nilai token berikutnya
* /

ketika (nilai token!= BATAL)
{
jika(menangkal== 1)
printf('Nama : %s ', nilai token);
lain jika(menangkal== 2)
printf('Pekerjaan : %s ', nilai token);
lain jika(menangkal== 3)
printf('Email : %s ', nilai token);
lain
printf('No. Ponsel : %s ', nilai token);
nilai token= strtok(BATAL,':');
menangkal++;
}
kembali 0;
}

Keluaran:

Output berikut akan muncul setelah mengeksekusi kode di atas.

Pisahkan string menggunakan fungsi find() dan erase()

String dapat dipisah dalam C++ dengan menggunakan fungsi find() dan erase(). Buat file C++ dengan kode berikut untuk memeriksa penggunaan fungsi find() dan erase() untuk membagi nilai string berdasarkan pembatas tertentu. Nilai token dihasilkan dengan mencari posisi pembatas dengan menggunakan fungsi find(), dan nilai token akan disimpan setelah menghapus pembatas dengan menggunakan fungsi erase(). Tugas ini akan diulang sampai konten lengkap dari string diuraikan. Selanjutnya, nilai-nilai dari array vektor akan dicetak.

//Sertakan perpustakaan yang diperlukan
#termasuk
#termasuk
#termasuk

ke dalamutama(){
//Menentukan string
jam::rangkaianstringData= 'Bangladesh dan Jepang dan Jerman dan Brasil';
//Tentukan pemisahnya
jam::rangkaianpemisah= 'dan';
//deklarasikan variabel vektor
jam::vektornegara{};
//deklarasikan variabel integer
ke dalamposisi;
//deklarasikan variabel string
jam::rangkaianoutstr, token;

/ *
Pisahkan string menggunakan fungsi substr()
dan menambahkan kata yang dipisah ke dalam vektor
* /

ketika ((posisi=stringData.Temukan(pemisah)) !=jam::rangkaian::tidak ada) {
token=stringData.substr(0, posisi);
//Hapus ruang ekstra dari depan string yang terbelah
negara.push_back(token.menghapus(0, tanda.temukan_pertama_bukan_dari('')));
stringData.menghapus(0, posisi+pemisah.panjang());
}
//Cetak semua kata yang dipisah kecuali yang terakhir
untuk (konstan mobil &outstr:negara) {
jam::biaya <<outstr<<jam::akhir;
}
//Cetak kata terakhir yang dipisah
jam::biaya <<stringData.menghapus(0, stringData.temukan_pertama_bukan_dari('')) <<jam::akhir;
kembali 0;
}

Keluaran:

Output berikut akan muncul setelah mengeksekusi kode di atas.

Kesimpulan

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