`
anders0913
  • 浏览: 90683 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

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

阅读更多
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,其原理相当简单:把源类型读入到字符流中,再写到目标类型中,就大功告成。

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


相当于

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


5、小结

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

;-)

分享到:
评论

相关推荐

    boost::lexical_cast用法

    boost::lexical_cast用法示例,包含数值转字串,字串转数值以及相应的异常处理代码

    boost之lexical_cast之字符串转换成数值.rar_Boost_boost_字符串转换成数值

    #include &lt;boost/lexical_cast.hpp&gt; #include int main() { std::string str = "1234"; int num; try { num = boost::lexical_cast(str); // 处理转换后的数值 } catch (const boost::bad_lexical_cast &e) ...

    LuaBind 源码 (Lua增强库)

    你正在使用一个UNIX系统(或者 cygwin),他们将使得构建LuaBind静态库变得很简单.如果 你正在使用 Visual Studio ,很简单的包含 src 目录下的文件到你的工程即可. 构建LuaBind的时候,你可以设定一些选项来使得库更加...

    CLPP在Linux上的移植

    #include &lt;boost/lexical_cast.hpp&gt; #include #include using namespace std; int main() { using boost::lexical_cast; string s = lexical_cast("hello,boost!"); cout ; return 0; } ``` - 编译: ``` ...

    boost_下载,安装,试用

    本文将详细介绍如何下载、安装 Boost,并通过一个简单的试用示例来展示 Boost 中 `lexical_cast` 的使用。 首先,我们来了解如何下载 Boost。你可以访问官方网站 [www.boost.org](http://www.boost.org) 获取最新的...

    topppers_asp环境配置_stepbystep

    #include &lt;boost/lexical_cast.hpp&gt; #include int main() { using boost::lexical_cast; int a = lexical_cast("123"); double b = lexical_cast("123.12"); std::cout ; std::cout ; return 0; } ```...

    lexical_cast:常规文字文本转换,例如以字符串表示的int,反之亦然

    #include &lt;boost/lexical_cast.hpp&gt; #include int num = 123; std::string strNum = boost::lexical_cast(num); ``` 同样,如果你想将字符串转换为整数,可以这样操作: ```cpp std::string input = "456"; int ...

    linux下安装boost库的完整步骤记录

    8. 为了验证安装是否成功,你可以编写一个简单的测试程序,例如使用`boost::lexical_cast`,并进行编译和运行。 以下是一个简单的测试程序示例: ```cpp #include &lt;boost/lexical_cast.hpp&gt; #include int main()...

    字符串和数字转换 C++ vs2008

    #include &lt;boost/lexical_cast.hpp&gt; std::string str = "123"; int num = boost::lexical_cast(str); ``` **数字转字符串** 1. **`std::to_string()`**: 自C++11起,`std::to_string()`可以轻松地将数字转换为...

    c++ int转string方法

    ### 方法四:使用`boost::lexical_cast` 如果你使用了Boost库,`boost::lexical_cast`提供了一种更安全的转换方式。 ```cpp #include &lt;boost/lexical_cast.hpp&gt; std::string ItoS(int n) { return boost::...

    用标准c++实现string与各种类型之间的转换

    #include &lt;boost/lexical_cast.hpp&gt; double d; std::string s = "12.56"; d = boost::lexical_cast(s); // d 等于 12.56 ``` 总结来说,`&lt;sstream&gt;`库为C++程序员提供了强大的工具,使得在字符串和其他类型之间...

Global site tag (gtag.js) - Google Analytics