boost format字串格式化
阿新 • • 發佈:2019-02-01
這個類是個小的實用類,提供更安全的格式化字串操作。
基本用法:
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