boost教程(五) 字串處理

2021-10-06 17:32:47 字數 2996 閱讀 1455

#include

"boost/algorithm/string.hpp"

#include

"boost/algorithm/string/regex.hpp"

#include

#include

#include

#include

#include

"boost/regex.hpp"

#include

#include

/*參考

*/int

main()

表示n 到 m 次

\\w+\\s\\w+ 形式(w+ 與w差不多 ,「+」意義:至少匹配一次) */

//std::string s = "boris schaling";

匹配 任意字元+空格+字元,所以結果是「s s」

//boost::iterator_ranger = boost::algorithm::find_regex(s, boost::regex("\\w\\s\\w"));

//std::cout << r << std::endl;

//*************** 正規表示式庫 boost.regex

//****函式 boost::regex_match() 用於字串與正規表示式的比較。 在整個字串匹配正規表示式時其返回值為 true 。

/*std::string s =

"boris schaling"

; boost::regex expr

("\\w+\\s\\w+");

std::cout << boost::

regex_match

(s, expr)

<< std::endl;*/

// ******************函式 boost::regex_search() 可用於在字串中搜尋正規表示式。

/*std::string s = "boris schaling";

boost::regex expr("(\\w+)\\s(\\w+)");

boost::smatch what;

if (boost::regex_search(s, what, expr))

;引數為 begin 與end

//boost::offset_separator sep(offsets, offsets + 3);

//tokenizer tok(s, sep);

//for (tokenizer::iterator it = tok.begin(); it != tok.end(); ++it)

//std::cout << *it << std::endl;

//*************格式化輸出庫 boost.format

類使用置於兩個百分號之間的數字作為佔位符,佔位符稍後通過 % 操作符與實際資料連線。

//以 16.9.2008的格式輸出。

//std::cout << boost::format("%1%.%2%.%3%") % 16 % 9 % 2008 << std::endl;

//如果要月份出現在日期之前,即美式表示,只需交換佔位符即可。結果變成 9/16/2008 。

//std::cout << boost::format("%2%/%1%/%3%") % 16 % 9 % 2008 << std::endl;

//操作器 std::showpos() 通過 boost::io::group() 與數字 99 連線,所以只要顯示 99 , 在它前面就會自動加上加號。

//std::cout << boost::format("%1% %2% %1%") % boost::io::group(std::showpos, 99) % 100 << std::endl;

//如果需要加號僅在 99 第一次輸出時顯示, 則需要改造格式化佔位符。/*

需要將資料的引用符號由 1$ 變為 1

% ,還需要在其兩側各新增乙個附加的管道符號,即將佔位符 %

1% 替換為 %

|1$+

|。 結果為 +

9910099*

///std::cout << boost::format("%|1$+| %2% %1%") % 99 % 100 << std::endl;

/* 以下例子在執行時會出現錯誤,因為它給第二個和第三個佔位符設定了引用但是卻忽略了第乙個。

*//*try

catch (boost::io::format_error &ex)

*///以下例子演示了不引用資料的方法。

//第二、第三個佔位符的管道符號可以被安全地省略,因為在這種情況下,他們並不指定格式。

//std::cout << boost::format("%|+| %|| %||") % 99 % 100 % 99 << std::endl;

//格式化字串中字母 'd' 的使用並不表示輸出數字,

//而是表示 boost::format 類所使用的內部流物件上的 std::dec() 操作器,

/* 它可以使用某些對 std::printf() 函式無意義的格式字串,如果使用 std::printf() 會導致程式在執行時崩潰。

*///std::cout << boost::format("%+d %d %d") % 99 % 100 % 99 << std::endl;

/* 在 std::printf() 函式中,字母 's' 只用於表示型別為 const char* 的字串,然而以下程式卻能正常執行。

在 boost.format 庫中,這並不代表強制為字串,它會結合適當的操作器,調整內部流的操作模式。

所以即使在這種情況下, 在內部流中加入數字也是沒問題的。

*/ std::cout << boost::

format

("%+s %s %s")%

99%100%

99<< std::endl;

system

("pause");

return0;

}

python初學五 字串

字串由一串行的單個字元組成,下標由0開始,slicing string b a 0 4 擷取包括第0位 不包括第4位的字元。如果a 4 擷取從一開始到第三位的字元。如果a 8 擷取包括第8位到最後一位的字元。如果a 擷取整個字串。如果a 6 20 若第二位超出整個字串的長度 len string n...

Swift 五 字串和字元

1 swift入門學習筆記 第一版 對swift的基礎知識點進行梳理總結。知識點一直在變,只是作為參考,以蘋果官方文件為準 2 在學習完基本的知識點以後會結合官方文件及相關資料,在此版本的基礎上進行新增更改。字串 let datequestion the month is let datenum 1...

Python學習筆記(五) 字串

以mark lutz著的 python學習手冊 為教程,每天花1個小時左右時間學習,爭取兩周完成。寫在前面的話 2013 7 17 19 50 學習筆記 1,在python中,單引號和雙引號的是一樣的。2,在字串前使用r可以關閉字元轉義,使用u或u則表示unicode字串。可以混合使用u和r。在un...