優秀的boost字串處理

2021-06-29 03:45:58 字數 1426 閱讀 1282

我將把我認為非常有用,c++標準庫又不是特別完備的做下重新學習做下筆記:字串處理,檔案系統等

在c++03中字串的處理相當不靈活

對比mfc的cstring的實現,我們可以發現string不僅缺少了分詞的tokenizer, 替換字串的replace也沒有實現根據輸入子串的替換,不僅沒有format還缺少了trim操作,可以說在最常用的地方少了許多便利性。雖然c++11增加了 to_string,stoi等轉換函式,但依舊顯得單薄。

而boost針對這點增加了許多實用的工具:

下面記得是format,使用起來相當方面只需要包含相關標頭檔案即可使用

format可以提供格式化字串的操作,同時該類提供了型別檢查功能,使用起來則相當方便

format本身過載了operator《操作符,可以直接輸出到想要的流中;

如:

format("%d,%s")
在指定資料時使用有點變化,以%輸入所需資料

上面可表示為

format(」%d,%s「)%5%"sef";
此外還可以有另一種像c#的位置的表示

format(」 %1%,%2% 「)  %5 %」sef"

還有點非常有用如下,包括str函式

cout <<  format("_%1$4d_ is : _%1$#4x_, _%1$#4o_, and _%1$s_ by default\n")  % 18;

// prints "_ 18_ is : _0x12_, _ 022_, and _18_ by default\n"

// taking the string value :

std::string s;

s= str( format(" %d %d ") % 11 % 22 );

由於format效率較低可以

使用copy來減少字串解釋時間

const format   fmt(」%,%s」);

format(fmt)%5%"sef";

效率可以有個如下直觀認識:

其中clocktime

#include #include using namespace std;

class clocktime

~clocktime() }

} } ;

cout << "sprintf" << endl;

clocktime te;

for (int i = 0; i < 20000; ++i)

} }

}

執行結果如下:

boost 字串處理

c 在stl庫中提供了乙個string類用以代替c語言的char 來實現字串功能,不過stl的string只提供了乙個連線字串和查詢的功能,其它的常用函式幾乎一律沒有,就連字串替換都得自己來實現,和c 的字串函式比起來簡直弱爆了。boost庫在標頭檔案中提供了不少字串處理函式,用以幫助我們實現基本的...

(三)Boost庫之字串處理

字串處理一直是c c 的弱項,string algo庫很好的彌補了這一點。string algo 庫演算法命名規則 字首i 有這個字首表名演算法的大小寫不敏感,否則大小寫敏感 字尾 copy 有這個字尾表明演算法不變動輸入,返回處理結果的拷貝,否則演算法原地處理 字尾 if 有這個字尾表明演算法需要...

boost 字串模組

1.boost algorithm earse all copy 用來刪除所有字串中所有匹配字元 boost algorithm earse all copy int main 2.boost algorithm erase first copy 刪除第乙個 boost algorithm eras...