Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Mengulangi Perkataan dalam Rentetan dengan Cekap dan Elegan?

Bagaimanakah Saya Boleh Mengulangi Perkataan dalam Rentetan dengan Cekap dan Elegan?

Linda Hamilton
Linda Hamiltonasal
2024-12-24 22:31:16997semak imbas

How Can I Efficiently and Elegantly Iterate Over Words in a String?

Lelaran Atas Rentetan: Keanggunan Memenuhi Kecekapan

Lelaran pada perkataan individu rentetan, terutamanya apabila dipisahkan oleh ruang kosong, ialah pengaturcaraan biasa tugasan. Walaupun pelbagai pendekatan wujud, mencari penyelesaian yang elegan dan cekap boleh menjadi mencabar.

Kaedah Semasa Menggunakan StringStream

Contoh yang disediakan menggunakan aliran rentetan, tetapi OP mencari lebih penyelesaian yang elegan. Kaedah ini sememangnya mantap, tetapi ia melibatkan beberapa manipulasi watak dan tidak ringkas seperti yang diingini.

Penyelesaian Elegan: Rentetan Pemisah

Untuk mencapai keanggunan dan kecekapan, kita boleh menggunakan fungsi split() C. Fungsi ini mengambil rentetan dan pembatas sebagai input dan mengembalikan vektor yang mengandungi perkataan belah.

#include <vector>
#include <string>

template <typename Out>
void split(const std::string &s, char delim, Out result) {
    std::istringstream iss(s);
    std::string item;
    while (std::getline(iss, item, delim)) {
        *result++ = item;
    }
}

std::vector<std::string> split(const std::string &s, char delim) {
    std::vector<std::string> elems;
    split(s, delim, std::back_inserter(elems));
    return elems;
}

Penyelesaian ini memerlukan kod minimum dan mudah difahami. Ia hanya membaca rentetan ke dalam aliran rentetan dan menggunakan fungsi getline() untuk mengekstrak perkataan individu menggunakan pembatas yang ditentukan. Rentetan berpecah kemudiannya boleh disimpan dalam vektor untuk pemprosesan selanjutnya.

Walau bagaimanapun, perlu diingat bahawa penyelesaian ini tidak melangkau token kosong. Jika anda perlu mengalih keluar rentetan kosong, anda boleh memproses lagi vektor tersebut.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengulangi Perkataan dalam Rentetan dengan Cekap dan Elegan?. 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