zoukankan      html  css  js  c++  java
  • boost/lexical_cast.hpp的简单使用方法_行动_新浪博客

    boost/lexical_cast.hpp的简单使用方法_行动_新浪博客

        boost/lexical_cast.hpp的简单使用方法
        (2010-03-19 16:31:13)
        转载▼
        标签:
        杂谈
            分类: C
        1、字符串->数值
        C++代码

            #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++代码

            #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++代码

            #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++代码

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



        相当于
        C++代码

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



        5、小结

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

        ;-)
  • 相关阅读:
    IPv6隧道技术——6to4实验分析
    IPV6地址解析与DAD机制实验分析
    交换机的高级特性
    组播IGMP实验分析
    BGP实验分析(二)
    BGP实验分析(一)
    路由策略实验分析(二)
    路由策略实验分析(一)
    一线互联网拼多多、饿了么、蚂蚁金服、哈啰出行、携程、饿了么、2345、百度等一些Java面试题
    Java中的匿名内部类
  • 原文地址:https://www.cnblogs.com/lexus/p/3524894.html
Copyright © 2011-2022 走看看