迭代字符串:优雅与效率
迭代字符串中的各个单词,尤其是用空格分隔时,是一种常见的编程任务。虽然存在多种方法,但找到优雅且高效的解决方案可能具有挑战性。
使用 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中文网其他相关文章!