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這樣的欄位時,就需要用到字串的拼接,首先,先貼出我解決問題的方法,再介紹字串的三種拼接方式: 我解決問題的方法:
rpm與yum命令、定時任務和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