首页 > 后端开发 > C++ > 如何高效、优雅地迭代字符串中的单词?

如何高效、优雅地迭代字符串中的单词?

Linda Hamilton
发布: 2024-12-24 22:31:16
原创
993 人浏览过

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

迭代字符串:优雅与效率

迭代字符串中的各个单词,尤其是用空格分隔时,是一种常见的编程任务。虽然存在多种方法,但找到优雅且高效的解决方案可能具有挑战性。

使用 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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板