1. 程式人生 > >boost format字串格式化

boost format字串格式化

這個類是個小的實用類,提供更安全的格式化字串操作。

基本用法:

  
    boost::format fmt("aaa %1% bbb ");
    fmt % "haha";
當然 它也支援一些 printf 的格式操作,例如:
  
    boost::format fmt("aaa %s bbb ");
    fmt % "haha";

 %05d : 輸出寬度為5的整數,不知用0填充。

%-8.3f: 輸出左對齊,總寬度為8,小數位3位的浮點數。

% 10s: 輸出10位的字串,不足位用空格填充。

%05X : 輸出寬度為5的大寫16進位制整數,不足位用0填補。

另外還支援 %|spec| 格式 ,它與%spec沒有功能上的區別,只是看的更清楚了。

具體可見下面的例子:

#include <boost/format.hpp>
#include <iostream>
using namespace std;

int main()
{
	char* COLOM_KEY = "Name";
	char* tableName ="player";
	char* key = "boost";
	boost::format fmt("select %1% from '%2%' where %1% = '%3%'");
	fmt % COLOM_KEY % tableName % key;

	std::string finalstr = fmt.str();
	const char* str = finalstr.c_str();

	cout<<str<<endl; //只是為了展示如何轉換為char*

	boost::format fmt2("%s:%d + %d = %d\n");
	fmt2%"sum"%1%2%(1+2);
	cout<<fmt2.str();
	cout<<boost::format("%s:%d + %d = %d\n")%"sum"% 1 % 2 % (1+2);

	boost::format fmt3("%05d\n%|-8.3f|\n%| 10s|\n%05X\n");
	cout<<fmt3%62 %2.236%"123456"%15;

	getchar();
	return 0;
}

輸出為:
select Name from 'player' where Name = 'boost'
sum:1 + 2 = 3
sum:1 + 2 = 3
00062
2.236
    123456
0000F