支持HW团队,就支付宝领取下面的红包吧!(2018年3月31前,就几毛,也会几块,可以和其他红包叠加使用),你领取消费,HW有奖励。红包使用无条件限制,有条件请注意是不是有病毒。

小伙伴们,给大家发红包喽!人人可领,领完就能用。祝大家领取的红包金额大大大!#吱口令#长按复制此消息,打开支付宝就能领取!er1OEj73Uj

登入 注册 | 验证
| 搜索
HelloWorld论坛 : > 计算机科学、技术、教学> 编程入门> c、c++基础> [转]万能转换器boost::lexical_cast
 
 
 
 
 
 
类别:其他 阅读:4623 评论:0 时间:七月 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),结果输出:

 

 

[挂载人]初学MPEG [审核人]初学MPEG 推荐

个人签名--------------------------------------------------------------------------------

Please Login (or Sign Up) to leave a comment