关于 boost 字符串算法,我似乎遗漏了一些东西。我正在尝试将 split_iterator 与使用 Clasifier 作为拆分点一起使用。所以,例如,我希望能够做这样的事情:
make_split_iterator(str, is_space);
但是 make_split_iterator 需要一个 Range 和一个 Finder。所以我需要的是找到一些序列来从分类器创建查找器。有谁知道如何做到这一点,或者甚至可能吗?
最佳答案
您可以使用 token_finder ,如 make_split_iterator(str, token_finder(is_space()))
或 make_split_iterator(str, token_finder(is_any_of("")))
等
完整示例,假设您的目标是标记化(因此 token_compress_on
)
#include <string>
#include <iostream>
#include <boost/algorithm/string.hpp>
int main()
{
std::string str = "This is a test string";
for( boost::algorithm::split_iterator<std::string::iterator> i
= make_split_iterator(str, token_finder(
boost::algorithm::is_space(),
boost::algorithm::token_compress_on));
i != boost::algorithm::split_iterator<std::string::iterator>();
++i)
{
std::cout << *i << '\n';
}
}
关于c++ - 使用带有 split_iterator 的分类器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5495032/