4.6.2 万能转换器boost::lexical_cast
2009-07-08 11:51 白乔/左飞 电子工业出版社 我要评论(0) 字号:T | T
综合评级:
想读(0)在读(0)已读(5) 品书斋鉴(2) 已有5人发表书评
《把脉VC++》第4章对象的赋值与转换,本章介绍了对象的初始化(从无到有)和赋值(从A到B)问题,讨论如何对对象进行类型上的、数值上的转换,并结合我们常常接触到的数学运算和字符编码问题展开讨论。本节讲述的是万能转换器boost::lexical_cast。
AD:
4.6.2 万能转换器boost::lexical_cast
boost::lexical_cast为数值之间的转换(conversion)提供了一揽子方案,比如:将一个字符串"123"转换成整数123,代码如下:
- strings="123";
-
inta=lexical_cast<int>(s);
这种方法非常简单,笔者强烈建议大家忘掉std诸多的函数,直接使用boost:: lexical_cast。如果转换发生了意外,lexical_cast会抛出一个bad_lexical_cast异常,因此程序中需要对其进行捕捉。
现在动手
编写如下程序,体验如何使用boost:: lexical_cast完成数值转换。
【程序 4-11】使用boost:: lexical_cast完成对象数值转换
- 01#include"stdafx.h"
- 02
- 03#include<iostream>
- 04#include<boost/lexical_cast.hpp>
- 05
-
06usingnamespacestd;
-
07usingnamespaceboost;
- 08
-
09intmain()
- 10{
-
11strings="123";
-
12inta=lexical_cast<int>(s);
-
13doubleb=lexical_cast<double>(s);
- 14
-
15printf("%d\r\n",a+1);
-
16printf("%lf\r\n",b+1);
- 17
-
18try
- 19{
-
20intc=lexical_cast<int>("wrongnumber");
- 21}
-
22catch(bad_lexical_cast&e)
- 23{
-
24printf("%s\r\n",e.what());
- 25}
- 26
-
27return0;28}
如上程序实现字符串"123"到整数、双精度实数的转换(为了防止程序作弊,我们特意让它将值加1),结果输出如图4-19所示。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
评论(0)