如何根据特殊字符解析一行?

时间:2014-07-01 19:44:25

标签: c++ parsing boost special-characters

absc|238066463|xyxz|A9BCV9.1|RIMO_PROM4

我想根据(“|”)拆分它。在python中执行它是一项简单的任务,但是在c ++中 我该怎么办?

我使用boost::split,但它不起作用?

line="absc|238066463|xyxz|A9BCV9.1|RIMO_PROM4"
vector<string> tokens;
boost::split(tokens,line,boost::is_any_of("|"));
cout<<tokens[0]<<"\t"<<tokens[1]<<endl;

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

有几种方法可以做到这一点。一个避免使用外部库,但仍然相当简单和直接的一个看起来像这样:

std::vector<std::string> split(std::string const &input, char sep) { 
    std::istringstream buffer(input);

    std::vector<std::string> ret;
    std::string token;

    while (std::getline(buffer, token, sep))
        ret.push_back(token);
    return ret;
}

这不是最快的方法,但字符串标记化通常并不重要。