Mengganti Substring dalam Array Karakter C++
Artikel ini membahas cara mengganti substring dalam array karakter C++ dengan menggunakan fungsi built-in std::string::replace
dan implementasi manual.
Metode 1: Menggunakan std::string::replace
Metode ini merupakan cara paling mudah dan efisien untuk mengganti substring dalam array karakter C++. Berikut langkah-langkahnya:
-
Konversi array karakter ke
std::string
: Gunakan konstruktorstd::string
untuk mengubah array karakter menjadi objekstd::string
. -
Panggil fungsi
replace
: Gunakan fungsistd::string::replace
untuk mengganti substring yang diinginkan. Fungsi ini menerima 4 parameter:- Posisi awal substring: Indeks karakter pertama yang akan diganti.
- Panjang substring: Jumlah karakter yang akan diganti.
- Substring pengganti: String yang akan dimasukkan sebagai pengganti.
-
Konversi kembali ke array karakter: Setelah penggantian selesai, konversi
std::string
kembali ke array karakter menggunakanc_str()
ataucopy
.
Contoh Kode:
#include
#include
int main() {
char text[] = "Halo dunia!";
std::string str(text);
// Mengganti "dunia" dengan "semesta"
str.replace(6, 5, "semesta");
// Konversi kembali ke array karakter
strcpy(text, str.c_str());
std::cout << text << std::endl; // Output: Halo semesta!
return 0;
}
Metode 2: Implementasi Manual
Jika Anda ingin menghindari penggunaan std::string
, Anda dapat mengimplementasikan penggantian substring secara manual menggunakan loop dan manipulasi pointer.
Contoh Kode:
#include
#include
void replaceSubstring(char* text, const char* oldSubstring, const char* newSubstring) {
size_t oldLen = strlen(oldSubstring);
size_t newLen = strlen(newSubstring);
// Mencari substring yang akan diganti
char* pos = strstr(text, oldSubstring);
while (pos != nullptr) {
// Memindahkan karakter setelah substring yang diganti
memmove(pos + newLen, pos + oldLen, strlen(pos + oldLen) + 1);
// Menyalin substring pengganti
memcpy(pos, newSubstring, newLen);
// Mencari substring berikutnya
pos = strstr(pos + newLen, oldSubstring);
}
}
int main() {
char text[] = "Halo dunia!";
// Mengganti "dunia" dengan "semesta"
replaceSubstring(text, "dunia", "semesta");
std::cout << text << std::endl; // Output: Halo semesta!
return 0;
}
Penjelasan Kode:
- Fungsi
replaceSubstring
mengambil tiga parameter: array karakter, substring yang akan diganti, dan substring pengganti. - Loop
while
mencari semua kemunculan substring yang akan diganti. memmove
memindahkan karakter setelah substring yang diganti ke posisi yang baru.memcpy
menyalin substring pengganti ke posisi substring yang lama.- Loop berlanjut hingga semua substring yang akan diganti telah diproses.
Perbandingan Metode
Metode | Keuntungan | Kerugian |
---|---|---|
std::string::replace |
Lebih mudah dan efisien | Membutuhkan konversi ke std::string |
Implementasi Manual | Lebih fleksibel | Lebih kompleks dan mungkin kurang efisien |
Pilihan metode terbaik tergantung pada kebutuhan dan preferensi Anda. Jika Anda hanya perlu mengganti substring sederhana, std::string::replace
adalah pilihan yang lebih mudah. Jika Anda memerlukan fleksibilitas yang lebih tinggi atau ingin menghindari penggunaan std::string
, implementasi manual dapat menjadi pilihan yang lebih baik.