C++ Char Array Replace Substring

4 min read Jul 01, 2024
C++ Char Array Replace Substring

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:

  1. Konversi array karakter ke std::string: Gunakan konstruktor std::string untuk mengubah array karakter menjadi objek std::string.

  2. Panggil fungsi replace: Gunakan fungsi std::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.
  3. Konversi kembali ke array karakter: Setelah penggantian selesai, konversi std::string kembali ke array karakter menggunakan c_str() atau copy.

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.

Featured Posts