将分类器与split_iterator一起使用

ltc*_*ltc 4 c++ boost

我似乎缺少一些关于提升字符串算法的东西.我正在尝试使用带有Clasifier的split_iterator作为分割点.所以,例如我希望能够做到这样的事情:

make_split_iterator(str, is_space);
Run Code Online (Sandbox Code Playgroud)

但是make_split_iterator需要一个Range和一个Finder.所以我需要找到一些序列来从分类器创建一个Finder.有谁知道怎么做,或者甚至可能吗?

Cub*_*bbi 9

您可以使用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';
        }
}
Run Code Online (Sandbox Code Playgroud)

测试运行:https://ideone.com/vQ2ZM