Boost tokenizer 一种简单的批分字符串的办法

来源:互联网 发布:底层架空建筑面积算法 编辑:程序博客网 时间:2024/05/22 09:58

boost::tokenizer是用于切割字符串的,类似于Java里面的StringTokenizer。

使用方法如下

1。 typedef 一个自己 tokenizer,(由于boost::tokenizer的声明太长了,typedef比较方便一些)
e.g   typedef boost::tokenizer<boost::char_separator<char> >  tokenizer;
 
2。定义一个分割符,比如 “竖杠”,另外注意boost::keep_empty_tokens,这个参数,这是boost的tokenizer定义的策略,有两种drop_empty_tokens 和keep_empty_tokens,不同在于对于空tokens的处理。比如:
使用drop_empty_tokens 时,"s234||345",两个连续的'|'会被当作一个处理
使用keep_empty_tokens 时,"s234||345",两个连续的'|'会切割出一个空字符串


e.g boost::char_separator<char> sep('|', 0, boost::keep_empty_tokens);


3。定义一个tokens实例,str是要切分的字符串,sep是分割符 e.g tokenizer tokens(str, sep);
 
4。定义一个iterator来访问每个被分割的字符串 e.g  tokenizer::iterator tok_iter = tokens.begin();

 
#include <boost/tokenizer.hpp>
void test_tokenizer()
{
    string s("This is  , a ,test!");
    boost::tokenizer<> tok(s);
     for(tokenizer<>::iterator beg=tok.begin(); beg!=tok.end();++beg)
{
         cout << *beg << "\n";
     }
}

0 0
原创粉丝点击