我想遍历字符串中的标记:
#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
的方法对我来说是理想的,因为它不会将匹配项复制到 vector 中,而只是在找到的范围内进行迭代,因此非常有效。现在,如何修改它,以便拆分迭代器从
str[5]
而不是字符串的开头开始搜索?当然,因为我想避免不必要的复制,所以我不想对子字符串副本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
关于c++ - 如何告诉boost::split_iterator从字符串的中间开始?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18927943/