zoukankan      html  css  js  c++  java
  • 4.6.2 万能转换器boost::lexical_cast

    4.6.2  万能转换器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

  • 相关阅读:
    Unique Binary Search Trees 解答
    Unique Paths II 解答
    Unique Paths 解答
    Maximum Subarray 解答
    Climbing Stairs 解答
    House Robber II 解答
    House Robber 解答
    Valid Palindrome 解答
    Container With Most Water 解答
    Remove Duplicates from Sorted List II 解答
  • 原文地址:https://www.cnblogs.com/bluejoe/p/5116060.html
Copyright © 2011-2022 走看看