conversion/lexical_cast
来源:互联网 发布:win10 看图软件 编辑:程序博客网 时间:2024/05/02 02:28
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;
}
#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;
}
#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;
}
#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输入的类型间转换。
另外 numeric_cast 提供了数字型之间转换的安全检查.
如边界检查: numeric_cast<int8_t>(lexical_cast<int>("127"));
- conversion/lexical_cast
- C++ boost之 conversion/lexical_cast
- lexical_cast
- lexical_cast
- lexical_cast
- lexical_cast
- Boost::lexical_cast
- Boost :Lexical_cast
- lexical_cast c++
- boost::lexical_cast
- boost lexical_cast
- boost::lexical_cast
- boost lexical_cast
- boost::lexical_cast
- BOOST-lexical_cast
- Conversion
- boost翻译(1):lexical_cast
- 学习boost之lexical_cast
- 非接触式LED照明系统设计报告
- 搭建WEB服务器BOA+CGIC的曲折过程
- 杨倩写过的一段话
- 郁闷。。。
- 韩冰:严肃游戏是什么
- conversion/lexical_cast
- 汇编语言数据结构
- 遇到一个很奇怪的问题,现在仍然没想到是怎么弄的。(有图无真相)
- debian下软件包的管理
- Julia set
- 严肃游戏的应用研究
- linux-Vi使用方法(备查)
- 在MyEclipse下更项目名称
- SQL Server数据库查询速度慢原因及优化方法