这个类是个小的实用类,提供更安全的格式化字符串操作。
基本用法:
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