boost库anyany_cast和lexical_cast

Posted Charmve

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了boost库anyany_cast和lexical_cast相关的知识,希望对你有一定的参考价值。

更多C++必备基础知识

any

类型:类
场景:存放任意类型
使用:boost::any val;

any_cast

注意:any_cast非但不是强转,并且类型必须完全匹配
类型:模板函数
作用:取出any对象中存放的数据
形式:

ValueType * any_cast(any * operand)
inline const ValueType * any_cast(const any * operand)
ValueType any_cast(any & operand)
inline ValueType any_cast(const any & operand)

失败:bad_any_cast();

lexical_cast

作用:强制转换,主要用于基本数据类型与string类之间的转换
失败:bad_lexical_cast();

#define _SCL_SECURE_NO_WARNINGS
#define _CRT_SECURE_NO_DEPRECATE
#include <iostream>
#include <vector>
#include <string>
#include <boost/algorithm/string/split.hpp>
#include <boost/lexical_cast.hpp>
#include <boost/algorithm/string/classification.hpp>
#include <boost/algorithm/string.hpp>
#include <boost/any.hpp>
using namespace std;

int main()
{
	boost::any val = 100;
	int x = boost::any_cast<int>(val); /* 取出any中的数据 */
	string i = boost::lexical_cast<string>(x); /* 将int转换为string */
	try
	{
		double d = boost::lexical_cast<double>(i); /* 将string转换为double */
	}
	catch(bad_lexical_cast &e)
	{
		cout << e.what() <<endl;
	}

	cin.get();
	return 0;
}

点赞关注!

以上是关于boost库anyany_cast和lexical_cast的主要内容,如果未能解决你的问题,请参考以下文章

一起学习Boost标准库--Boost.texical_cast&format库

boost::filesystem::path::lexically_normal: 这是不正确的行为吗?

boost::lexical_cast int 用零填充字符串

boost::lexical_cast<> 的语言环境不变保证

在 C++ 中使用 boost::lexical_cast 将双精度转换为字符串?

Ubuntu下安装boost库