一.字符串和其他类型的转换
头文件 #include
string str = "12345";
int num;
stringstream stream;
stream << str;
stream >> num; //num:12345
这样应该看懂了,lexical_cast是如何工作了吧!
当然boost里面是没有用到stringstream的,那么boost中是如何处理的呢?
其实和stringstream非常类似,
- 通过<<操作符重载,和函数的类型重载。实现对不同类型的输入支持
- 将所有的输入转换为字符类型
- 通过>>操作符重载,和函数的类型重载。实现对不同类型的输出支持、
二.字符串格式化输出
这个功能其实和stringstream很想。但是习惯用sprintf的同学来说,stringstream并不是很好用。
现在来看下
format fm = format("%2% %1%") % 34 %23;
string str = fm.str(); //34 23
- 通过模板”%2% %1%”创建format对象
- 调用format对象的%操作符
- 将输出字符串
当然也可以这么用
int a = 100;
double b = 234.98;
format fm = format("%2% %1%");
fm.bind_arg(1,a);
fm.bind_arg(2,b);
string str = fm.str(); //234.98 100
int a = 100;
double b = 234.98;
format fm = format("%d %f");
fm.bind_arg(1,a);
fm.bind_arg(2,b);
string str = fm.str(); //100 234.980000
原理非常简单就不介绍了。
参看:
http://www.boost.org/doc/libs/1_55_0/libs/format/doc/format.html