Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Menggantikan Teks dengan Cekap dalam Rentetan dalam C?

Bagaimana untuk Menggantikan Teks dengan Cekap dalam Rentetan dalam C?

Barbara Streisand
Barbara Streisandasal
2024-11-08 03:18:01604semak imbas

How to Efficiently Replace Text within a String in C  ?

Mencari dan Menggantikan Teks dalam Rentetan Standard

Dalam pelbagai senario pengaturcaraan, menjadi penting untuk memanipulasi rentetan dengan menggantikan aksara atau subrentetan tertentu. Untuk rentetan standard dalam C , terdapat kaedah yang berkesan untuk melaksanakan operasi cari-dan-ganti.

Menggunakan Fungsi std::replace

Fungsi std::replace menyediakan cara yang mudah untuk menggantikan kejadian subrentetan dalam rentetan. Sintaks std::replace adalah seperti berikut:

std::string& replace(std::size_t pos, std::size_t n, const std::string& str);

Di sini, pos mewakili kedudukan permulaan, n menunjukkan bilangan aksara untuk diganti dan str ialah rentetan gantian.

Contoh:

Pertimbangkan rentetan berikut:

std::string s("One hello, two hellos.");

Untuk menggantikan semua kejadian "hello" dengan "dunia", anda boleh menggunakan kod berikut:

s.replace(s.find("hello"), s.find("hello") + 5, "world"); // Find the position of "hello", replace 5 characters (length of "hello") with "world"

Menggunakan boost::replace_all

Pustaka Boost menyediakan pilihan yang lebih mudah untuk melaksanakan operasi cari-dan-ganti dengan fungsi boost::replace_all. Ia memerlukan rentetan, rentetan untuk mencari dan rentetan untuk menggantikannya.

Contoh:

Untuk menggantikan semua kejadian "foo" dengan "bar" dalam rentetan berikut:

std::string target("Would you like a foo of chocolate. Two foos of chocolate?");

Menggunakan boost::replace_all, anda boleh melakukannya seperti berikut:

#include <boost/algorithm/string.hpp> // Include the Boost library

...

boost::replace_all(target, "foo", "bar");

Atas ialah kandungan terperinci Bagaimana untuk Menggantikan Teks dengan Cekap dalam Rentetan 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