由于我使用的是VS2019编译的(boost安装过程请看我的上一篇:C++ boost库安装过程(Windows)(亲测有效)),所以写的代码,到了VS2010上运行,就出错,所以就回到2019版本上测试。
- 打开VS2019,新建控制台应用程序
选择项目存储位置,修改项目名称之后,点击创建就可以了。
- 点击上面的菜单栏——>项目——>属性中
- 在打开的页面中,进行以下操作:
- 在C/C++——>附加包含目录 中添加boost的路径
- 在链接器——>附加库目录中添加boost目录下stage\lib,
点击应用,确定,然后退出了这个框框。
- 在C/C++——>附加包含目录 中添加boost的路径
- 在源文件中的这个文件下写代码(系统默认给创建了一个)
- 源代码如下:
#include <boost/any.hpp> #include <string> #include <vector> #include <iostream> using namespace std; using namespace boost; void main() { typedef vector<boost::any> many; many a; a.push_back(2); a.push_back(string("test")); for (unsigned int i = 0; i < a.size(); ++i) { cout << a[i].type().name() << endl; try { int result = any_cast<int>(a[i]); cout << result << endl; } catch (boost::bad_any_cast& ex) { cout << "cast error:" << ex.what() << endl; } } }
这个boost下的any是一个类似int、string这样的数据类型,但它里面存储的内容可以是任意类型,所以像上面代码所写的,在一个any类型的vector中存储了一个整型数值和一个字符串型数据,后面输出的时候也是正常输出的。结果如下: