万能转换器boost::lexical_cast
boost::lexical_cast为数值之间的转换(conversion)提供了一揽子方案,比如:将一个字符串"123"转换成整数123,代码如下:
string s = "123"; int a = lexical_cast<int>(s);
这种方法非常简单,笔者强烈建议大家忘掉std诸多的函数,直接使用boost:: lexical_cast。如果转换发生了意外,lexical_cast会抛出一个bad_lexical_cast异常,因此程序中需要对其进行捕捉。
现在动手
编写如下程序,体验如何使用boost:: lexical_cast完成数值转换。
【程序 4-11】使用boost:: lexical_cast完成对象数值转换
#include "stdafx.h" #include <iostream> #include <boost/lexical_cast.hpp> using namespace std; using namespace boost; int main() { string s = "123"; int a = lexical_cast<int>(s); double b = lexical_cast<double>(s); printf("%d\r\n", a + 1); printf("%lf\r\n", b + 1); try { int c = lexical_cast<int>("wrong number"); } catch(bad_lexical_cast & e) { printf("%s\r\n", e.what()); } return 0; }
如上程序实现字符串"123"到整数、双精度实数的转换(为了防止程序,我们特意让它将值加1),结果输出如图4-19所示。
|
| (点击查看大图)图4-19 运行结果 |
光盘导读
该项目对应于光盘中的目录"\ch04\LexicalCastTest"。
本文介绍如何使用boost库中的lexical_cast函数进行数值之间的转换,并提供了示例程序及运行结果。

185

被折叠的 条评论
为什么被折叠?



