支持HW团队,就支付宝领取下面的红包吧! (打开支付宝就能领取!er1OEj73Uj), (打开支付宝收索“516503473”), 你领取消费,HW有奖励。红包使用无条件限制,有条件请注意是不是有病毒。

Login or Sign up | Validate
| Search

博主:初学MPEG

初学MPEG 本博客-采用Python的web框架Django与Mysql数据库,致力于对Python、Django的了解 与研究
Django技术QQ群:XXXXXXX
Python技术QQ群:XXXXXXX

Category

Keywords

本站最新博文

友情链接  

[转]万能转换器boost::lexical_cast

类别:其他 状态:游客可见,可回,会员可关联(良好) 阅读:5856 评论:0 时间:July 23, 2013, 5:19 p.m.
关键字:boost lexical_cast

转载:http://book.51cto.com/art/200907/134789.htm

其实主要是为了避免跨平台 32 位  64位运行时候, 大于32 位的整形错误。

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 <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),结果输出:

 

 

操作:

Please Login (or Sign Up) to leave a comment