Boost:格式化輸出--Format

boost::format類提供了相似C語言裏'printf'功能的格式化輸出能力,功能更強大。

所需頭文件:

#include <boost/format.hpp>

示例代碼:

  1. #include <iostream>
  2. #include <string>
  3. #include <boost/format.hpp>
  4.   
  5. using namespace std;
  6. int _tmain(int argc, _TCHAR* argv[])
  7. {
  8.     // 使用%序號%的方式給出指示符, 後面用%鏈接對應的數據。
  9.     cout << boost::format("writing %1%,  x=%2% : %3%-th try") % "toto" % 40.23 % 50 << endl;
  10.     // 輸出:writing toto,  x=40.23 : 50-th try
  11.    
  12.     // 能夠延遲使用,順序沒必要一致
  13.     boost::format fmter("%2% %1%");
  14.     fmter % 36;
  15.     fmter % 77;
  16.     cout << fmter << endl;
  17.     // 輸出:77 36
  18.    
  19.     // 可重用
  20.     fmter % 12;
  21.     fmter % 24;
  22.     cout << fmter << endl;
  23.     // 輸出:24 12
  24.   
  25.     // 可直接轉成字符串
  26.     std::string s = fmter.str();
  27.     std::string s2 = str( boost::format("%2% %1% %2% %1%")%"World"%"Hello");
  28.   
  29.     cout << s << endl << s2 << endl;
  30.     // 輸出:
  31.     // 24 12
  32.     // Hello World Hello World
  33.   
  34.     // 能夠使用printf指示符
  35.     cout << boost::format("%3.1f - %.2f%%") % 10.0 % 12.5  << endl;
  36.     // 輸出:10.0 - 12.50%
  37.   
  38.     // printf指示符裏使用N$指定使用第幾個參數
  39.     cout << boost::format("%2$3.1f - %1$.2f%%") % 10.0 % 12.5  << endl;
  40.     // 輸出:12.5 - 10.00%
  41.   
  42.     cin.get();
  43.     return 0;
  44. }
 

boost::format裏的指示符語法大體有三大類:

繼承並強化自printf的格式化字符串

    形式爲:[ N$ ] [ flags ] [ width ] [ . precision ] type-char
    N$可選,指定使用第N個參數(注意,要麼全部指示符都加此參數,要麼都不加)
    接下來的參數能夠參數printf的指示符,只是format爲其中的flags添加了'_'和'='標誌,用於指出內部對齊和居中對齊。

設置打印規則,它是printf參數的一個補充,只是爲了更直觀點。

    形式爲:%|spec|
    如:%|1$+5|表示顯示第一個參數,顯示正負號,寬度爲5

簡單的位置標記

    形式爲:%N%
    簡單地聲明顯示第N個參數,優勢是比較直觀並且不用指定類型。
 
 
轉載:http://www.cnblogs.com/lzjsky/archive/2011/05/05/2037327.html
相關文章
相關標籤/搜索