可以在一个令牌列表中使用boost :: split吗?

时间:2015-08-19 21:12:59

标签: c++ algorithm parsing boost boost-tokenizer

我想迭代逗号分隔的字符串列表并对每个字符串执行操作。有没有办法设置boost :: split来识别“abc,xyz”和“abc”作为有效输入?换句话说,如果谓词与任何内容都不匹配,Split可以返回整个输入字符串吗?

或者我应该使用boost:tokenizer吗?

1 个答案:

答案 0 :(得分:1)

Boost 1.54完全符合您的要求。没有尝试过新版本。

示例:

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

int main()
{
  std::string test1 = "abc,xyz";
  std::vector<std::string> result1;
  boost::algorithm::split(result1, test1, boost::is_any_of(","));
  for (auto const & s : result1)
  {
    std::cout << s << std::endl;
  }

  std::string test2 = "abc";
  std::vector<std::string> result2;
  boost::algorithm::split(result2, test2, boost::is_any_of(","));
  for (auto const & s : result2)
  {
    std::cout << s << std::endl;
  }

  return 0;
}

产地:

abc
xyz
abc