当前位置:  编程语言>c/c++

boost库lexical_cast不同用法代码参考

 
    发布时间:2013-7-1  


    本文导语: 1、字符串->数值详细代码:#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<&...


1、字符串->数值

详细代码:

#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、数值->字符串

详细代码:

#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、异常

详细代码:

#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"); 
int d = boost::lexical_cast<int>("123");

相当于C++代码

int d;    

std::stringstream s;    

s<<"123";    

s>>d;  

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

5、总结

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


  • 本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载,整理或搜集自网络.欢迎任何形式的转载,转载请注明出处.
    转载请注明:文章转载自:[169IT-IT技术资讯]
    本文标题:boost库lexical_cast不同用法代码参考
相关文章推荐:


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

type iis7站长之家