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!