我在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"));
}
你能帮助我吗?
答案 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", ':');