poco库学习笔记(7) Poco::Any
来源:互联网 发布:男生保养脸部皮肤知乎 编辑:程序博客网 时间:2024/04/28 12:16
一.数据容器的定义:
DataContainer.h:
#ifndef DATA_CONTAINER_H
#define DATA_CONTAINER_H
#include <vector>
#include <Poco/Any.h>
class DataContainer{
public:
void push(Poco::Any any);
Poco::Any get(int index);
size_t size();
private:
std::vector<Poco::Any> _vector;
};
inline void DataContainer::push(Poco::Any any){
_vector.push_back(any);
}
inline Poco::Any DataContainer::get(int index){
if(index < size()){
return _vector[index];
}else{
return 0;
}
}
inline size_t DataContainer::size(){
return _vector.size();
}
#endif
二.数据解析容器的定义:
DataAuxiliary.h:
#ifndef DATA_AUXILIARY_H
#define DATA_AUXILIARY_H
#include "DataContainer.h"
#include <Poco/Types.h>
using namespace Poco;
class DataAuxiliary{
public:
static bool getBool(DataContainer& container,int index);
static int getInt(DataContainer& container,int index);
static UInt64 getUInt64(DataContainer& container,int index);
static UInt32 getUInt32(DataContainer& container,int index);
static UInt16 getUInt16(DataContainer& container,int index);
static DataContainer getContainer(DataContainer& container,int index);
static std::string getString(DataContainer& container,int index);
private:
DataAuxiliary(){}
};
#endif
三.数据解析容器的实现:
DataAuxiliary.cpp:
#include "DataAuxiliary.h"
bool DataAuxiliary::getBool(DataContainer& container,int index){
return AnyCast<bool>(container.get(index));
}
int DataAuxiliary::getInt(DataContainer& container,int index){
return static_cast<int>(AnyCast<int>(container.get(index)));
}
Poco::UInt32 DataAuxiliary::getUInt32(DataContainer& container,int index){
return static_cast<Poco::UInt32>(AnyCast<Poco::UInt32>(container.get(index)));
}
Poco::UInt16 DataAuxiliary::getUInt16(DataContainer& container,int index){
return static_cast<UInt16>(AnyCast<Poco::UInt16>(container.get(index)));
}
std::string DataAuxiliary::getString(DataContainer& container,int index){
return AnyCast<std::string>(container.get(index));
}
DataContainer DataAuxiliary::getContainer(DataContainer& container,int index){
return AnyCast<DataContainer>(container.get(index));
}
四.Main函数的实现:
Main.cpp:
#include "DataContainer.h"
#include "DataAuxiliary.h"
#include <iostream>
class Data{
public:
Data(int arg1,double arg2,std::string arg3)
:_arg1(arg1),_arg2(arg2),_arg3(arg3){
}
void toString(){
std::cout<<"_arg1->"<<_arg1<<std::endl;
std::cout<<"_arg2->"<<_arg2<<std::endl;
std::cout<<"_arg3->"<<_arg3<<std::endl;
}
private:
int _arg1;
double _arg2;
std::string _arg3;
};
int main(int argc,char** argv){
DataContainer container;
container.push(Poco::Any(Poco::UInt32(32)));//压入基本数据类型
container.push(Poco::Any(std::string("helloworld")));
container.push(Poco::Any(false));
container.push(Poco::Any(Data(25,99,"linyanwen")));//压入构造数据类型
std::cout<<container.size()<<std::endl;
Poco::UInt32 dt = DataAuxiliary::getUInt32(container,0);//解析数据
std::string str = DataAuxiliary::getString(container,1);
bool flag = DataAuxiliary::getBool(container,2);
Data data = AnyCast<Data>(container.get(3));
std::cout<<"dt->"<<dt<<std::endl;
std::cout<<"str->"<<str<<std::endl;
if(!flag){
std::cout<<"flag is false"<<std::endl;
}else{
std::cout<<"flag is true"<<std::endl;
}
data.toString();
return 0;
}
PS:初写文章,文笔生涩之处,各位请见谅,若有疑问或者交流的,可加本人YY号:301558660
转载请注明出处:山水间博客,http://blog.csdn.net/linyanwen99/article/details/8029530- poco库学习笔记(7) Poco::Any
- poco库学习笔记(5) Poco::Thread
- poco库学习笔记(6) Poco::Timestamp
- poco库学习笔记(8) Poco::HashMap
- poco库学习笔记(9) Poco::AutoPtr
- poco库学习笔记(10) Poco::NotificationCenter
- poco库学习笔记(1) poco库的安装
- poco库学习笔记(1) Poco::Net::TCPServerConnection
- poco库学习笔记(2) Poco::Net::TCPServerConnectionFactory
- poco库学习笔记(4) Poco::Util::Option
- 【Poco】Poco::Any的例子
- Poco学习笔记
- poco库学习笔记(3) 加载配置文件
- POCO
- Poco C++ 学习笔记连载:Poco命令行解释
- C++跨平台开源库POCO学习笔记
- POCO C++库学习和分析 -- 序
- POCO C++库学习和分析 -- 任务
- as3中,判断是中文、英语、数字
- 最新flash player 11.4.402.278在Win7 + Firefox环境下无法检测到摄像头被占用
- VS2008 error C2664的解决 字符编码
- c++ 虚继承与继承的差异
- UITapGestureRecognizer 的用法
- poco库学习笔记(7) Poco::Any
- unicode环境下用CFile读取txt的若干疑惑,该如何处理
- SQL网上一些浏览(5)
- C#打开网址的方法
- YUV420图像格式
- 宏发41F-1Z-C2接线
- 开源中最好的Web开发的资源
- vim高效编辑——vim复制粘贴探密(转)
- grep详解