3月11日
tokenizer 使用例子
#include<iostream>
#include <boost/tokenizer.hpp>
#include<string>
int main()
{
using namespace std;
using namespace boost;
string s = "12252001";
int offsets[] = {1,2,3,4};
offset_separator f(offsets, offsets+4);
typedef token_iterator_generator<offset_separator>::type Iter;
Iter beg = make_token_iterator<string>(s.begin(),s.end(),f);
Iter end = make_token_iterator<string>(s.end(),s.end(),f);
// 上面这行语句也可以这样写:
// Iter end;
for(;beg!=end;++beg)
{
cout << *beg << "\n";
}
string str = "just test;;Hello|world||-foo--bar;yow;baz|";
typedef tokenizer<char_separator<char> > token;
char_separator<char> sep(" -;|");
token tokens(str, sep);
for (token::iterator tok_iter = tokens.begin();
tok_iter != tokens.end(); ++tok_iter)
{
cout << "<" << *tok_iter << "> ";
}
cout << "\n";
return EXIT_SUCCESS;
}
结果:
1
22
520
01
<just> <test> <Hello> <world> <foo> <bar> <yow> <baz>
tokenizer 正如其意,是用来拆分字符串的boost库。第一个例子是按照offset_separator 指定的数组元素来拆分字符串。
第二个则是按照char_separator指定的字符作为拆分字符。来拆分字符串。
注token结构不大,没有默认的构造函数。直接在栈上构造,构造是指定好参数。