原文链接:http://www.cnblogs.com/lzjsky/archive/2011/05/05/2037327.html
此文非常详细!
boost::format类提供了类似C语言里'printf'功能的格式化输出能力,当然功能更强大。所需头文件:
#include <boost/format.hpp>
示例代码:
#include <iostream>
#include <string>
#include <boost/format.hpp>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
// 使用%序号%的方式给出指示符, 后面用%连接对应的数据。
cout << boost::format("writing %1%, x=%2% : %3%-th try") % "toto" % 40.23 % 50 << endl;
// 输出:writing toto, x=40.23 : 50-th try
// 可以延迟使用,顺序不必一致
boost::format fmter("%2% %1%");
fmter % 36;
fmter % 77;
cout << fmter << endl;
// 输出:77 36
// 可重用
fmter % 12;
fmter % 24;
cout << fmter << endl;
// 输出:24 12
// 可直接转成字符串
std::string s = fmter.str();
std::string s2 = str( boost::format("%2% %1% %2% %1%")%"World"%"Hello");
cout << s << endl << s2 << endl;
// 输出:
// 24 12
// Hello World Hello World
// 可以使用printf指示符
cout << boost::format("%3.1f - %.2f%%") % 10.0 % 12.5 << endl;
// 输出:10.0 - 12.50%
// printf指示符里使用N$指定使用第几个参数
cout << boost::format("%2$3.1f - %1$.2f%%") % 10.0 % 12.5 << endl;
// 输出:12.5 - 10.00%
cin.get();
return 0;
}
boost::format里的指示符语法大致有三大类:
继承并强化自printf的格式化字符串
形式为: [ N$ ] [ flags ] [ width ] [ . precision ] type-charN$可选,指定使用第N个参数(注意,要么所有指示符都加此参数,要么都不加)
接下来的参数可以参数printf的指示符,只是format为其中的flags添加了'_'和'='标志,用于指出内部对齐和居中对齐。
设置打印规则,它是printf参数的一个补充,只是为了更直观点。
形式为: %|spec|如:%|1$+5|表示显示第一个参数,显示正负号,宽度为5
简单的位置标记
形式为: %N%简单地声明显示第N个参数,优点是比较直观而且不用指定类型。
(2):C/C++的格式化输出(4)--boost::format
原文链接:http://blog.sina.com.cn/s/blog_a0d2e5590101ados.html
此文比较系统!
boost::format里的指示符语法大致有四大类:
继承并强化自printf的格式化字符串
设置打印规则,它是printf参数的一个补充,只是为了更直观点。
简单的位置标记
下面是转载:http://www.cnblogs.com/WuErPIng/archive/2005/04/21/142308.html
浅尝BOOST之FORMAT
概述
一、boost::format工作的方式
二、boost::format实际使用的实例
输出结果
三、boost::format新的格式说明符
四、异常处理
五、还有其它一些功能,但暂时感觉派不上用处,就不去深究了。
(3):char*,const char*和string的相互转换
原文链接:http://blog.sina.com.cn/s/blog_5436b2f40100pjzz.html
为了以后查找方便,特此总结如下。
如果有不对的地方或者有更简单的方法,请指出~~
1.// string转const char*
string s = "abc";
const char* c_s =s.c_str();
2.// const char*转string
直接赋值即可
const char* c_s ="abc";
string s(c_s);
3. //string转char*
string s = "abc";
char* c;
const int len =s.length();
c = new char[len+1];
strcpy(c,s.c_str());
4. //char*转string
char* c = "abc";
string s(c);
5. //const char*转char*
const char* cpc ="abc";
char* pc = newchar[100];//足够长
strcpy(pc,cpc);
6. //char*转const char*
//直接赋值即可
char* pc = "abc";
const char* cpc = pc;
(4):我的遍历代码