使用空格拆分字符串,并使用CRLF作为分隔符C ++

时间:2016-01-28 15:18:19

标签: c++ vector split delimiter getline

我有一段代码,当前使用空格作为分隔符拆分字符串。每个令牌共同存储在一个字符串向量中。分割函数如下所示:

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

感谢所有回复的人!

0 个答案:

没有答案