Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Mengeluarkan Ruang dengan Cekap daripada C Strings?

Bagaimanakah Saya Boleh Mengeluarkan Ruang dengan Cekap daripada C Strings?

Barbara Streisand
Barbara Streisandasal
2024-12-13 08:34:09483semak imbas

How Can I Efficiently Remove Spaces from C   Strings?

Penyingkiran Ruang yang Cekap daripada Rentetan C

Mengalih keluar ruang daripada rentetan C ialah tugas biasa untuk manipulasi rentetan. Walaupun mungkin untuk mengulang melalui aksara secara manual, terdapat pendekatan yang lebih cekap.

Kaedah pilihan melibatkan algoritma pustaka standard yang berkuasa remove_if dan predikat isspace. remove_if menghapuskan elemen daripada jujukan berdasarkan syarat yang ditentukan, manakala isspace menyemak aksara ruang putih.

Untuk menggunakan ini, anda boleh memanggil:

remove_if(str.begin(), str.end(), isspace);

Operasi ini sahaja tidak mengubah panjang rentetan tetapi menyusun semula elemen dengan sewajarnya. Untuk melaraskan panjang, kami menggunakan rentetan::erase:

str.erase(remove_if(str.begin(), str.end(), isspace), str.end());

remove_if mengelakkan berbilang salinan data, menjadikannya sangat cekap. Berikut ialah pelaksanaan yang dipermudahkan:

template<typename T, typename P>
T remove_if(T beg, T end, P pred)
{
    T dest = beg;
    for (T itr = beg;itr != end; ++itr)
        if (!pred(*itr))
            *(dest++) = *itr;
    return dest;
}

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengeluarkan Ruang dengan Cekap daripada C Strings?. 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