c++ - 如何迭代字符串的单词?

标签 c++ string split

如何遍历由空格分隔的单词组成的字符串的单词?

请注意,我对 C 字符串函数或那种字符操作/访问不感兴趣。我更喜欢优雅而不是效率。我目前的解决方案:

#include <iostream>
#include <sstream>
#include <string>

using namespace std;

int main() {
    string s = "Somewhere down the road";
    istringstream iss(s);

    do {
        string subs;
        iss >> subs;
        cout << "Substring: " << subs << endl;
    } while (iss);
}

最佳答案

我用它来通过分隔符分割字符串。第一个将结果放入预先构建的 vector 中,第二个返回一个新 vector 。

#include <string>
#include <sstream>
#include <vector>
#include <iterator>

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;
}

注意这个方案没有跳过空tokens,所以下面会找到4个item,其中一个是空的:

std::vector<std::string> x = split("one:two::three", ':');

关于c++ - 如何迭代字符串的单词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/236129/

相关文章:

php - 检查 $_POST-value 是否为空

python - XQuery 到 API Python 字符串

solr - Apache Solr TermsComponent : How to prevent from splitting words after one character. 例如 "t-shirt"

iOS - 使用 openGL ES 仅缩放显示的一部分

c++ - 如何在我的程序中创建日志系统?

string - bquote : How to include an expression saved as a string object?

c++ - 为每个新客户端提取 GStreamer 和 URI 查询参数

regex - QString拆分多个分隔符

计算值集合的标量的函数的 C++11esque 签名

c++ - 为什么继承会影响异常处理?