boost::lexical_cast

来源:互联网 发布:哪个软件有代送服务 编辑:程序博客网 时间:2024/04/30 00:46

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  usingnamespace std; 
  7. 07  usingnamespace 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所示。

0 0