文字列内のトークンを反復処理したい:
#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)
。