cpp中的分割线,带有多个分隔符

时间:2014-01-13 13:31:50

标签: c++ boost split

我想按 <=> => 的外观拆分每一行所以我有2个分隔符,每个分隔符都超过一个角色

  string example="A + B => C + D";
  vector <string> leftRight;
  boost::algorithm::split_regex( leftRight, example, boost::is_any_of( " <=> +| => " ));

我的预期结果是这样的:

leftright[0]= A+B
leftright[1]= C+D

1 个答案:

答案 0 :(得分:1)

那么,让我们看一下boost::algorithm::split_regex。你做得很好,直到最后一个参数。该函数需要将boost :: regex作为最后一个参数,boost::is_any_of不提供其中一个参数。

您的用例的合理正则表达式将是这样的:

boost::regex r("(<=>)|(=>)");

如果我们将所有这些放在一起:

#include <vector>
#include <string>
#include <iostream>
#include <boost/regex.hpp>
#include <boost/algorithm/string/regex.hpp>

int main() {
    std::string example="A + B => C + D";
    std::vector <std::string> leftRight;
    boost::regex r("(<=>)|(=>)");
    boost::algorithm::split_regex(leftRight, example, r);

    for (int i=0; i<leftRight.size(); ++i)
        std::cout << "\"" << leftRight[i] << "\"\n";
}

我们得到一个输出:

"A + B "
" C + D"