Fra*_*ank 2 c++ boost iterator split range
我想迭代字符串中的标记:
 #include <boost/algorithm/string.hpp>
  using namespace boost::algorithm;
  typedef split_iterator<std::string::const_iterator> SplitIter;
  for(SplitIter i = make_split_iterator(str, token_finder(is_space()));
      i != SplitIter(); ++i)
    std::cout << *i << std::endl; // prints token
这种使用 的方法split_iterator对我来说是理想的,因为它不会将匹配复制到向量中,而只是迭代它找到的范围,因此非常有效。
现在,我如何修改它,以便分割迭代器开始搜索str[5],例如,而不是字符串的开头?当然,因为我想避免不必要的复制,所以我不想在子字符串 copy 上进行搜索str.substr(5)。
您可以自己构建迭代器:
  for(SplitIter i = split_iterator<std::string::const_iterator>(
                          str.begin() + 5,
                          str.end(),
                          token_finder(is_space()));
      i != SplitIter(); ++i)
    std::cout << *i << '\n'; // prints token
| 归档时间: | 
 | 
| 查看次数: | 1686 次 | 
| 最近记录: |