zoukankan      html  css  js  c++  java
  • c++数据类型万能转换器boost::lexical_cast .

    boost::lexical_cast为数值之间的转换(conversion)提供了一揽子方案,比如:将一个字符串"123"转换成整数123,代码如下:

    1. string s = "123";  
    2. int a = lexical_cast<int>(s); 

    这种方法非常简单,笔者强烈建议大家忘掉std诸多的函数,直接使用boost:: lexical_cast。如果转换发生了意外,lexical_cast会抛出一个bad_lexical_cast异常,因此程序中需要对其进行捕捉。

    现在动手

    编写如下程序,体验如何使用boost:: lexical_cast完成数值转换。

    【程序 4-11】使用boost:: lexical_cast完成对象数值转换

    1. 01  #include "stdafx.h" 
    2. 02    
    3. 03  #include <iostream>  
    4. 04  #include <boost/lexical_cast.hpp>  
    5. 05    
    6. 06  using namespace std;  
    7. 07  using namespace boost;  
    8. 08    
    9. 09  int main()  
    10. 10  {  
    11. 11      string s = "123";  
    12. 12      int a = lexical_cast<int>(s);  
    13. 13      double b = lexical_cast<double>(s);  
    14. 14    
    15. 15      printf("%d/r/n", a + 1);  
    16. 16      printf("%lf/r/n", b + 1);  
    17. 17    
    18. 18      try 
    19. 19      {  
    20. 20          int c = lexical_cast<int>("wrong number");  
    21. 21      }  
    22. 22      catch(bad_lexical_cast & e)  
    23. 23      {  
    24. 24          printf("%s/r/n", e.what());  
    25. 25      }  
    26. 26    
    27. 27      return 0;28 } 

    如上程序实现字符串"123"到整数、双精度实数的转换(为了防止程序作弊,我们特意让它将值加1),结果输出如图4-19所示。

     
    (点击查看大图)图4-19  运行结果

    光盘导读

    该项目对应于光盘中的目录"/ch04/LexicalCastTest"。

    ===============================

    以上摘自《把脉VC++》第4.6.2小节的内容 ,转载请注明出处。

    如果你想与我交流,请点击如下链接加我为好友:http://student.csdn.net/invite.php?u=113292&c=8913f87cffe7d533

    from:http://blog.csdn.net/bluejoe2000/article/details/4461421

  • 相关阅读:
    JS 实现的年月日三级联动
    【代码总结● Swing中的一些操作与设置】
    S7通信协议之你不知道的事儿
    .NetCore程序在Linux上面部署的实现
    什么是哈希表?
    什么是队列?
    什么是栈?
    什么是数组?
    什么是数据结构?
    什么是链表?
  • 原文地址:https://www.cnblogs.com/lidabo/p/2804252.html
Copyright © 2011-2022 走看看