zoukankan      html  css  js  c++  java
  • Boost::lexical_cast类型转换

    1、字符串->数值

    C++代码

     1 #include <boost/lexical_cast.hpp> 
     2 #include <iostream> 
     3 int main() 
     4 { 
     5     using boost::lexical_cast; 
     6     int a = lexical_cast<int>("123"); 
     7     double b = lexical_cast<double>("123.12"); 
     8     std::cout<<a<<std::endl 
     9     std::cout<<b<<std::endl; 
    10     return 0; 
    11 }

    2、数值->字符串

    C++代码

     1 #include <boost/lexical_cast.hpp> 
     2 #include <string> 
     3 #include <iostream> 
     4 int main() 
     5 { 
     6     using std::string; 
     7     const double d = 123.12; 
     8     string s = boost::lexical_cast<string>(d); 
     9     std::cout<<s<<std::endl; 
    10     return 0; 
    11 }

    3、异常

      如果转换发生了意外,lexical_cast会抛出一个bad_lexical_cast异常,因此程序中需要对其进行捕捉。

    C++代码

     1 #include <boost/lexical_cast.hpp> 
     2 #include <iostream> 
     3 int main() 
     4 { 
     5     using std::cout; 
     6     using std::endl; 
     7     int i; 
     8     try 
     9     { 
    10         i = boost::lexical_cast<int>("xyz"); 
    11     } 
    12     catch(boost::bad_lexical_cast& e) 
    13     { 
    14         cout<<e.what()<<endl; 
    15         return 1; 
    16     } 
    17     cout<<i<<endl; 
    18     return 0; 
    19 } 

      显然“xyz”并不能转换为一个int类型的数值,于是抛出异常,捕捉后输出“bad lexical cast: source type value could not be interpreted as target”这样的信息。

    4、注意事项

      lexical_cast依赖于字符流std::stringstream,其原理相当简单:把源类型读入到字符流中,再写到目标类型中,就大功告成。

  • 相关阅读:
    Java8实战之Stream流式操作
    类、对象、引用
    java对象的四种引用:强引用、软引用、弱引用和虚引用
    《将博客搬至CSDN》
    **JAVA参数传递方式 (按值传递与引用传递区别)
    JavaWeb--ServletContext
    HttpSessionListener的用法
    SpringMVC优雅的获取HttpSevletRequest及HttpServletResponse简录
    setnx
    JVM命令工具开发
  • 原文地址:https://www.cnblogs.com/blueoverflow/p/4798681.html
Copyright © 2011-2022 走看看