Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Menggantikan Substrings dengan Cekap dalam C?

Bagaimanakah Saya Boleh Menggantikan Substrings dengan Cekap dalam C?

DDD
DDDasal
2024-12-19 20:10:11757semak imbas

How Can I Efficiently Replace Substrings in C  ?

Menggantikan Fragmen Rentetan dengan Rentetan Baharu

Menggantikan bahagian rentetan tertentu dengan rentetan alternatif ialah tugas biasa dalam pengaturcaraan. Dalam C , perpustakaan standard menyediakan penyelesaian yang mudah untuk mencapai ini.

Untuk menggantikan subrentetan, anda boleh memanfaatkan fungsi find() untuk mencari kedudukan permulaan subrentetan sasaran dalam rentetan asal. Selepas itu, anda boleh menggunakan fungsi replace() untuk menggantikan subrentetan sasaran dengan rentetan gantian yang diingini.

Coretan kod berikut menunjukkan proses:

bool replace(std::string& str, const std::string& from, const std::string& to) {
    size_t start_pos = str.find(from);
    if(start_pos == std::string::npos)
        return false;
    str.replace(start_pos, from.length(), to);
    return true;
}

std::string string("hello $name");
replace(string, "$name", "Somename");

Dengan menggunakan pendekatan ini, anda boleh mengubah suai sebahagian rentetan dengan berkesan seperti yang diperlukan.

Mengendalikan Berbilang Penggantian

Dalam senario tertentu, anda mungkin perlu menggantikan berbilang kejadian subrentetan tertentu dalam rentetan. Untuk menangani perkara ini, anda boleh mempertimbangkan fungsi replaceAll(), yang akan menyerupai yang berikut:

void replaceAll(std::string& str, const std::string& from, const std::string& to) {
    if(from.empty())
        return;
    size_t start_pos = 0;
    while((start_pos = str.find(from, start_pos)) != std::string::npos) {
        str.replace(start_pos, from.length(), to);
        start_pos += to.length(); // In case 'to' contains 'from', like replacing 'x' with 'yx'
    }
}

Fungsi ini berulang melalui rentetan, mencari dan menggantikan semua kejadian subrentetan yang ditentukan dengan rentetan gantian yang disediakan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggantikan Substrings dengan Cekap dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn