1. 程式人生 > >boost——字串與文字處理tokenizer

boost——字串與文字處理tokenizer

#include <iostream>
#include <string>
#include <vector>
#include <set>
#include <map>
#include <algorithm>
#include <boost/tokenizer.hpp>
#include <boost/typeof/typeof.hpp>
#include <string.h>

using namespace boost;
using namespace std;
template<typename
T> void print(T& tok) { for(BOOST_AUTO(pos,tok.begin());pos != tok.end();++pos){ cout << "["<< *pos << "] "; } cout << endl; } int main( int argc,char **argv) { /*tokenizer預設把所有的空格和標點符號作為分隔符,因此分割出的只是單詞,和string_algo::split的演算法有區別*/ string str("link raise the master-swaord"
); tokenizer<> tok(str); for(BOOST_AUTO(pos,tok.begin());pos != tok.end();++pos){ cout << "["<< *pos << "] "; } cout << endl; /*分詞函式物件: *tokenizer提供四個分詞物件: *1.char_delimiters_separator:使用標點符號分詞,是tokeizer預設使用的分詞函式物件,已經被宣告廢棄; *2.char_separator:支援一個字元集合作為分隔符,預設標點符號分詞; *3.escaped_list_separator:使用逗號分隔的分詞; *4.off_separator:使用偏移量來分詞,分解平檔案格式的字串很有用 */
/*char_separator(const char *dropped_delims, const char* kept_delims = 0, empty_token_policy empty_tokens = drop_empty_tokens); * 1.第一個引數是分隔符集合,此集合中的字元不會作為分詞的結果出現 * 2.第二個引數也是分隔符集合,但是其中的字元會保留在分隔結果中 * 3.第三個引數類似split演算法中的eCompress引數,處理連續兩個出現的分隔符,一個空字串, * 相當於split演算法中token_compress_off值; 若為drop_empty_tokens,則空白單詞不會作為分詞的結果。 */ char* str2 = "Link ;;::<mom-dad> zebbix"; char_separator<char> csp; tokenizer<char_separator<char>,char*> tok2(str2,str2 + strlen(str2,csp)); print(tok2); tok2..assign(str2,str2+strlen(str2),char_separator<char>(" ;-","<>")); print(tok2); tok2..assign(str2,str2+strlen(str2),char_separator<char>(" ;-<>","",keep_empty_tokens)); print(tok2); /*explicit escaped_list_separator( Char e = ' \\' ,Char c = ' ,', Char q = ' \" ' ) : escape_( 1,e) , c_( 1,c) , quote_( 1,q) , last_( false) {} * 其建構函式一般取預設值: * 1.第一個引數e指定了字元中的轉義字元,預設是斜槓(\); * 2.第二個引數是分隔符,預設是逗號; * 3.第三個引數是引號字元,預設是"; */ string str1 = "id,100,name,\"Tony\""; escaped_list_separator<char> esp; tokenizer<escaped_list_separator<char> > tok1(str1,esp); print(tok1); return (0); }

相關推薦

boost——字串文字處理tokenizer

#include <iostream> #include <string> #include <vector> #include <set> #include <map> #include <al

Boost學習筆記 -- 字串文字處理

lexical_cast 使用lexical_cast #include <boost/lexical_cast.hpp> using namespace boost; sample int x = lexical_cast&

python3字串文字處理

每個程式都回涉及到文字處理,如拆分字串、搜尋、替換、詞法分析等。許多工都可以通過內建的字串方法來輕鬆解決,但更復雜的操作就需要正則表示式來解決。 1、針對任意多的分隔符拆分字串 In [1]: line = 'asdf fjdk; afed, fjek,asdf, foo' #使用正則模組

boost 字串文字處理庫概述

conversion/lexical_cast - lexical_cast 類模板,來自 Kevlin Henney. format - 型別安全的 '類printf' 的格式化操作,來自 Samuel Krempp. iostreams - 一個框架,用於定義流、流緩衝和i/o過濾器,來自 Jonatha

C++ boost 元件簡介:字串文字處理

字串及文字處理 Boost.Regex 正則表示式是解決大量模式匹配問題的基礎。它們常用於處理大的字串,子串模糊查詢,按某種格式tokenize字串,或者是基於某種規則修改字串。由於C++沒有提供正則表示式支援,使得有些使用者被迫轉向其它支援正則表示式的語言,如Perl, awk, 和 sed。Regex

數組文字處理

ret 順序 定義變量 n+1 ima 字符 delet sos 指定 一、 數組 數據集合、元素、下表 文字處理程序處理字符數據 字符編碼 ASCII-英文 字符類型 字符數組 +數組定義 數據類型 數組變量名[表達式....]; +size sizeof(數據類型名)/

python字串文字處理

2.1 使用多個界定符分割字串 問題 你需要將一個字串分割為多個欄位,但是分隔符(還有周圍的空格)並不是固定的。 解決方案 string 物件的 split() 方法只適應於非常簡單的字串分割情形, 它並不允許有多個分隔符或者是分隔符周圍不確定的空格。 當你需要更加靈活的切割字串

Linux正則文字處理工具(10)

正則表示式 (Regular Expression, RE, 或稱為常規表示式)是通過一些特殊字元的排列,用於『查詢/替換/刪除』一行或多行文字或字串,簡單的說,正則表示式就是用在字串的處理上面的一種『表示公式』,正則表示式並不是一個工具程式,而是一個對字串處理的標準依據,如果您想要以正則表示式的方式處理字串

Boost 學習筆記--->字串&文字處理

編譯環境:win10 Vs2015 Boost version:1.65.0 概解:      lexical_cast、string_algo、format這幾個方面是boost處理字串與文字的核心功能,涵蓋了以下方面:      a、將數值與字串互做轉換      

datagrid的文字換行連續字串換行處理字串三種擷取方式

1 文字自動換行:nowrap:false 2 當時字串,比如email這樣的欄位時,就需要用到字串的拼接,首先,先貼出我解決問題的方法,再介紹字串的三種拼接方式: 我解決問題的方法:

rpmyum命令、定時任務和sed文字處理

1、簡述rpm與yum命令的常見選項,並舉例rpm命令: 語法:rpm [OPTIONS] [PACKAGE_FILE] 選項: 安裝: -i, --install 升級: -U, --update,-F, --freshen 解除安裝: -e, --erase 查詢: -q

156-練習9和10 迴圈練習和字串字元的處理

9,財務處的小云老師最近就在考慮一個問題:如果每個老師的工資額都知道,最少需要準備多少張人民幣,才能在給每位老師發工資的時候都不用老師找零呢?這裡假設老師的工資都是正整數,單位元,人民幣一共有100元、50元、10元、5元、2元和1元六種。 int num = Convert.

文字處理【1.1.1】-判斷字串型別並返回相應型別

def formats(st): if '.' in st or 'e' in st or 'E' in st: try: return float(st) except: return st

互動百科詞條快速抓取[適用於文字處理挖掘]

1.前言      因近期小組的一個專案有文字挖掘的需求,需要用到Word2Vec的文字特徵抽取,為了進行技術預演需要我們提前對模型進行訓練。而只要涉及資料探勘相關的模型,資料集是不必可少的。中文文字挖掘領域,百科詞條涵蓋面廣,而且內容比較豐富,於是便選擇百科的詞條作為資料集

Go/文字處理/字串處理

# 字串常用函式 package main import ( "fmt" "strconv" "strings" ) func main() { //是否包含子串 fmt.Println(strings.Contains("hellogo","go")) /

css文字處理字串超長展示省略號

眾所周知,通過css設定文字強制不換行超出用省略號表示很簡單: {     white-space: nowrap; 文字強制不換行;     text-overflow:ellipsis; 文字溢位顯示省略號;     overflo

js中處理json Json物件Json字串的轉化、JSON字串Java物件的轉換

轉:https://www.cnblogs.com/zq-boke/p/5833387.html Json物件與Json字串的轉化、JSON字串與Java物件的轉換   一.Json物件與Json字串的轉化 1.jQuery外掛支援的轉換方式:   $.pars

處理mathtype公式在word中文字對齊問題

問題: 最近在寫論文過程中,在word文件裡輸入mathtype寫的公式,發現公式與文字不能很好得對齊,上下有偏差,很醜,讓人很不爽,如下所示: 解決辦法:三步走 1、選擇所在段落右擊滑鼠->

linux 下的文字處理字串替換——tr命令

通過使用 tr,您可以非常容易地實現 sed 的許多最基本功能。您可以將 tr 看作為 sed 的(極其)簡化的變體:它可以用一個字元來替換另一個字元,或者可以完全除去一些字元。您也可以用它來除去重複字元。這就是所有 tr 所能夠做的。      tr用來從標準輸入中通過

boost 字串處理(1)

字串演算法 標頭檔案 include 一.從split開始 string str1("hello abc-*-ABC-*-aBc goodbye"); vector<string> SplitVec; //結果 split(SplitVe