我有一段代码,当前使用空格作为分隔符拆分字符串。每个令牌共同存储在一个字符串向量中。分割函数如下所示:
vector<string> split(const string &s, char delim) {
stringstream ss(s);
string item;
vector<string> tokens;
while (getline(ss, item, delim)) {
tokens.push_back(item);
}
return tokens;
}
矢量定义如下:
vector<string> mocapVector = split(buffer.str(), ' ');
Example output of the vector can be seen here, ,其中输出了一个向量项,控制台显示在原始数据文件旁边(整个字符串在拆分之前。
重申:
a b c
d e f
g h i
输出为:
a
b
c
d
e
f
g
h
i
在该示例中,只有空格是分隔符,而不是CRLF(行尾)。 我的问题是,如何同时使用空格AND CRLF作为分隔符,以便向量中的每个字符串都是一个令牌,而不是一起使用的标记块?
理想情况下,如果可能的话,最好避免使用外部库。
谢谢!
编辑:感谢@mindriot和@πάνταῥεῖ找到解决方案。
解决方案是:
vector<string> split(const string &s, char delim) {
stringstream ss(s);
string item;
vector<string> tokens;
while (ss >> item) {
tokens.push_back(item);
}
return tokens;
}
感谢所有回复的人!