1

文字列内のトークンを反復処理したい:

 #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)

4

1 に答える 1

4

イテレータを自分で構築できます。

  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
于 2013-09-21T01:26:38.207 に答える