zoukankan      html  css  js  c++  java
  • boost/lexical_cast.hpp的简单使用方法_学着站在巨人的肩膀上_百度空间

    boost/lexical_cast.hpp的简单使用方法_学着站在巨人的肩膀上_百度空间

    boost/lexical_cast.hpp的简单使用方法

    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. }  

    #include <boost/lexical_cast.hpp>#include <iostream>int main(){ using boost::lexical_cast; int a = lexical_cast<int>("123"); double b = lexical_cast<double>("123.12"); std::cout<<a<<std::endl std::cout<<b<<std::endl; return 0;}


    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. }  

    #include <boost/lexical_cast.hpp>#include <string>#include <iostream>int main(){ using std::string; const double d = 123.12; string s = boost::lexical_cast<string>(d); std::cout<<s<<std::endl; return 0;}

    3、异常

    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. }  

    #include <boost/lexical_cast.hpp>#include <iostream>int main(){ using std::cout; using std::endl; int i; try { i = boost::lexical_cast<int>("xyz"); } catch(boost::bad_lexical_cast& e) { cout<<e.what()<<endl; return 1; } cout<<i<<endl; return 0;}

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

    4、注意事项

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

    C++代码

    1. int d = boost::lexical_cast<int>("123");  

    int d = boost::lexical_cast<int>("123");

    相当于

    C++代码

    1. int d;   
    2. std::stringstream s;   
    3. s<<"123";   
    4. s>>d;  

    int d;std::stringstream s;s<<"123";s>>d;

    5、小结

    我们已经体验了boost::lexcial_cast。当然,lexical_cast不仅仅局限于字符串类型与数值类型之间的转换:可在任意可输出到stringstream的类型和任意可从stringstream输入的类型间转换。

    ;-)

  • 相关阅读:
    第02组 Alpha冲刺 (3/6)
    第02组 Alpha冲刺 (2/6)
    第02组 Alpha冲刺 (1/6)
    第02组(51) 需求分析报告
    第02组(51) 团队展示
    结对编程作业
    CentOS7下利用systemd机制实现tomcat开机自启动
    mysql5.7密码修改
    last命令显示出unknown用户究竟是因为啥?
    3.图形显示设备
  • 原文地址:https://www.cnblogs.com/lexus/p/2593679.html
Copyright © 2011-2022 走看看