個人檔案Quake3 启示录相片部落格清單更多 工具 說明

部落格


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结构不大,没有默认的构造函数。直接在栈上构造,构造是指定好参数。

回應

請稍候...
很抱歉,您輸入的回應過長。請縮短您的回應。
您尚未輸入內容,請再試一次。
很抱歉,目前無法新增您的回應,請稍後再試。
若要新增回應,您的父母必須先給您權限。要求權限
您的家長已關閉回應功能。
很抱歉,目前無法刪除您的回應,請稍後再試。
您已超過每日回應上限次數,請於 24 小時後再試一次。
由於系統顯示您可能傳送垃圾郵件給其他使用者,因此您帳號中的回應功能已遭停用。 如果您認為自己帳號遭錯誤停用,請連絡 Windows Live 支援
請完成下列安全檢查,以完成回應。
您輸入的安全檢查字元必須與圖片或音訊中的字元相符。

若要新增回應,請以您的 Windows Live ID 登入 (若您使用 Hotmail、Messenger 或 Xbox LIVE,則您已擁有 Windows Live ID)。登入


沒有 Windows Live ID?註冊

引用通告

此內容的引用通告是:
http://topameng.spaces.live.com/blog/cns!F962D4854A8233D!537.trak
引述這則內容的部落格