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用法示例,包含数值转字串,字串转数值以及相应的异常处理代码
#include <boost/lexical_cast.hpp> #include int main() { std::string str = "1234"; int num; try { num = boost::lexical_cast(str); // 处理转换后的数值 } catch (const boost::bad_lexical_cast &e) ...
你正在使用一个UNIX系统(或者 cygwin),他们将使得构建LuaBind静态库变得很简单.如果 你正在使用 Visual Studio ,很简单的包含 src 目录下的文件到你的工程即可. 构建LuaBind的时候,你可以设定一些选项来使得库更加...
#include <boost/lexical_cast.hpp> #include #include using namespace std; int main() { using boost::lexical_cast; string s = lexical_cast("hello,boost!"); cout ; return 0; } ``` - 编译: ``` ...
本文将详细介绍如何下载、安装 Boost,并通过一个简单的试用示例来展示 Boost 中 `lexical_cast` 的使用。 首先,我们来了解如何下载 Boost。你可以访问官方网站 [www.boost.org](http://www.boost.org) 获取最新的...
#include <boost/lexical_cast.hpp> #include int main() { using boost::lexical_cast; int a = lexical_cast("123"); double b = lexical_cast("123.12"); std::cout ; std::cout ; return 0; } ```...
#include <boost/lexical_cast.hpp> #include int num = 123; std::string strNum = boost::lexical_cast(num); ``` 同样,如果你想将字符串转换为整数,可以这样操作: ```cpp std::string input = "456"; int ...
8. 为了验证安装是否成功,你可以编写一个简单的测试程序,例如使用`boost::lexical_cast`,并进行编译和运行。 以下是一个简单的测试程序示例: ```cpp #include <boost/lexical_cast.hpp> #include int main()...
#include <boost/lexical_cast.hpp> std::string str = "123"; int num = boost::lexical_cast(str); ``` **数字转字符串** 1. **`std::to_string()`**: 自C++11起,`std::to_string()`可以轻松地将数字转换为...
### 方法四:使用`boost::lexical_cast` 如果你使用了Boost库,`boost::lexical_cast`提供了一种更安全的转换方式。 ```cpp #include <boost/lexical_cast.hpp> std::string ItoS(int n) { return boost::...
#include <boost/lexical_cast.hpp> double d; std::string s = "12.56"; d = boost::lexical_cast(s); // d 等于 12.56 ``` 总结来说,`<sstream>`库为C++程序员提供了强大的工具,使得在字符串和其他类型之间...