迭代字串:優雅與效率
迭代字串中的各個單詞,尤其是用空格分隔時,是一種常見的編程任務。雖然存在多種方法,但找到優雅且高效的解決方案可能具有挑戰性。
使用 StringStream 的當前方法
提供的範例使用字串流,但 OP 尋求更多優雅的解決方案。這個方法確實很健壯,但是涉及一些字元操作,不夠簡潔。
優雅的解決方案:分割字串
要實現優雅和高效,我們可以利用 C 的 split() 函數。此函數採用字串和分隔符號作為輸入,並傳回包含拆分詞的向量。
#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; }
此解決方案需要最少的程式碼並且易於理解。它只是將字串讀入字串流,並使用 getline() 函數使用指定的分隔符號來提取單字。然後,可以將分割後的字串儲存在向量中以供進一步處理。
但請記住,此解決方案不會跳過空白標記。如果需要去除空字串,可以對向量進行進一步的後處理。
以上是如何高效、優雅地迭代字串中的單字?的詳細內容。更多資訊請關注PHP中文網其他相關文章!