messagepack 初试

来源:互联网 发布:北京赛车计划软件 编辑:程序博客网 时间:2024/06/05 04:28

本来想玩protocbuf的可是3.0版本的弄了一个早上,在window上都无法编译,就试玩了下messagepack。

messagepack直接下源码用vs编译,一次通过。下面直接贴上例子。

// msgPack.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <msgpack.hpp>#include <vector>#include <string>#include <iostream>class myclass {public:std::string m_str;std::vector<int> m_vec;public :myclass(){}myclass(std::string str, std::vector<int> v) {m_str = str;m_vec = v;}public:MSGPACK_DEFINE(m_str, m_vec);};int main(void) {msgpack::sbuffer buffer;msgpack::packer<msgpack::sbuffer> pk(&buffer);pk.pack_array(3);pk.pack(std::string("Log message ... 1"));pk.pack(std::string("Log message ... 2"));pk.pack(std::string("Log message ... 3"));msgpack::unpacked msg;msgpack::unpack(&msg, buffer.data(), buffer.size());msgpack::object obj = msg.get();std::vector<std::string> v;obj.convert(v);for (auto it = v.begin(); it < v.end(); ++it){std::cout << *it << std::endl;}// serializes multiple objects into one message containing a map using msgpack::packer.msgpack::sbuffer buffer2;msgpack::packer<msgpack::sbuffer> pk2(&buffer2);pk2.pack_map(2);pk2.pack(std::string("x"));pk2.pack(3);pk2.pack(std::string("y"));pk2.pack(4);msgpack::unpacked msg1;msgpack::unpack(&msg1, buffer2.data(), buffer2.size());msgpack::object obj2 = msg1.get();std::map<std::string,int> m;obj2.convert(m);for (auto it = m.begin(); it != m.end(); ++it){std::cout << it->first;}system("pause");}


0 0
原创粉丝点击