[BOOST] BOOST::Format
這句話將在標準輸出上輸出“Yousen says "Hello" to Yousen.”
接下來簡單說明一下format的用法。估計聰明人都猜到了,在格式化字符串中,“%1%”(不帶引號,后稱占位符)表示后面跟的第一個參數,“%2%”則表示第二個,以此類推——注意:占位符是從1開始計數,兄弟們別記錯了。后面的“%”(當然也不帶引號)操作符的意思么……這是format類(千萬別把它當作是個函數)重載的操作符,用來替換格式化字符串中的占位符。
剛才說了,format是個類,確切的說format是這樣定義的:
?
看清楚了哦,要想用unicode(寬字符)版的format,就用wformat。
?
typedef basic_format<wchar_t> wformat;
現在來試試format的實例:
#include <iostream>
#include <string>
using namespace std;
using namespace boost;
int main()
{
?format fmt( "%2% says \"%1%\"." );
?fmt % "Yousen";
?fmt % "Hello";
?string str = fmt.str();
?cout << "string from fmt: " << str << endl;
?cout << "fmt: " << fmt << endl;
}
輸出:
fmt: Hello says "Yousen".
假如已經有一個format對象了,想要改變格式化字符串,調用format::parse方法。如:
fmt.parse( "%1% %2%" );
在獲取fmt輸出之前,若是參數不足或者多余格式化字符串所指定的數量,則可能會拋出下列異常:
too_few_args
too_many_args
out_of_range
這些都是format_error類的派生類,format_error則派生于std::exception類。
?
上面舉例的format格式字符串都是非常簡單的。format實際上提供了非常強大的格式化控制。這是格式化字符串中占位符的完整語法:
其中N為參數序號,從1開始計數;flags是格式控制標志;width為格式化輸出寬度,.precision為顯示小數點后面位數;type-char為輸出類型控制符——除了序號,其他內容和printf中的一樣。不羅嗦了。自己看后面的參考站點。
注意前面有個%,如果用簡單模式(僅表示參數序號),后面也得跟上一個%。
除此之外,format也兼容prinf風格格式化字符串,但是不能和format自己的格式化字符串混用。如“%s says %2%”這樣是不行滴,運行時會拋出異常。還有,在使用printf風格字符串時,所有跟進的參數都將順序替換占位符。
最后一點是關于用戶自定義類的格式化,原則上,只要定義了相應的流輸出(operator<<(std::ostream,...))操作符,就能夠被format所支持。而且假如指定了詳細的格式,format則會盡可能的去實現。也不羅嗦了,洗澡睡覺!
其他詳細情況則參考:http://www.boost.org/libs/format/doc/format.html
?
轉載于:https://www.cnblogs.com/bouygues/archive/2012/12/24/4479997.html
總結
以上是生活随笔為你收集整理的[BOOST] BOOST::Format的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: centos服务器解决vsftp连接时的
- 下一篇: 2012平安夜