Boost any库的笔记

来源:互联网 发布:中国银河证券软件 编辑:程序博客网 时间:2024/06/04 23:30

Author: kagula

Date: 2016-03-10

Environment:

[1]Boost 1.57

[2]Visual Studio 2013 Update 5

Prologue:

  boost any是万能数据类型,使用它仅包含头文件就可以了,不需要库文件链接。

Content:

// TestBoostAny.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include <boost/any.hpp>#include <map>#include <string>#include <iostream>using namespace std;int _tmain(int argc, _TCHAR* argv[]){map<string, boost::any>  mapAny;//测试数据放进去string strValue = "std::string";mapAny["string"] = "string";mapAny["std:string"] = strValue;mapAny["std:string2"] = string("std:string2");mapAny["int"] = 123;mapAny["long"] = 234l;mapAny["float"] = .345f;mapAny["double"] = .456;//测试数据取出来//如果cast了不正确的数据类型会throw exception!map<string, boost::any>::iterator iter = mapAny.begin();while (iter != mapAny.end()){cout << iter->first << ">>>";if (iter->second.type() == typeid(int)){cout << " == typeid(int) " << boost::any_cast<int>(iter->second);}else if (iter->second.type() == typeid(string)){cout << " == typeid(string) " << boost::any_cast<string>(iter->second);}else if (iter->second.type() == typeid(const char*)){cout << " == typeid(const char*) " << boost::any_cast<const char *>(iter->second);}else{cout << "unknown ";}cout << endl;iter++;}cin.get();return 0;}



0 0