在C ++中用一个字符分隔符拆分字符串

时间:2014-01-18 18:17:18

标签: c++ string

我在StackOverflow上看到了一些非常流行的问题,关于在C ++中拆分字符串,但每次都需要通过 SPACE 分隔符拆分该字符串。相反,我想通过; 分隔符拆分std::string

此代码取自StackOverflow的答案,但我不知道如何更新; ,而不是 SPACE

#include <iostream>
#include <string>
#include <sstream>
#include <algorithm>
#include <iterator>

int main() {
    using namespace std;
    string sentence = "And I feel fine...";
    istringstream iss(sentence);
    copy(istream_iterator<string>(iss),
             istream_iterator<string>(),
             ostream_iterator<string>(cout, "\n"));
}

你能帮助我吗?

1 个答案:

答案 0 :(得分:2)

以下是Split a string in C++?使用任何分隔符的答案之一。

我用它来分隔字符串。第一个将结果放在预先构造的向量中,第二个返回一个新向量。

std::vector<std::string> &split(const std::string &s, char delim, std::vector<std::string> &elems) {
    std::stringstream ss(s);
    std::string item;
    while (std::getline(ss, item, delim)) {
        elems.push_back(item);
    }
    return elems;
}


std::vector<std::string> split(const std::string &s, char delim) {
    std::vector<std::string> elems;
    split(s, delim, elems);
    return elems;
}

请注意,此解决方案不会跳过空标记,因此以下内容会找到4个项目,其中一个项目为空:

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