基本信息
源码名称:c++使用msgpack序列化数据
源码大小:0.83M
文件格式:.zip
开发语言:C/C++
更新时间:2021-11-07
   友情提示:(无需注册或充值,赞助后即可获取资源下载链接)

     嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300

本次赞助数额为: 5 元 
   源码介绍


```
#include "stdafx.h"
#include <msgpack.hpp>
#include <vector>
#include <string>
#include <iostream>
#include "fstream"
``
class CRecordAction
{
public:
    CRecordAction(WORD wMainId, WORD wCmdId, WORD wId, void* data, int len, WORD dwTimeSpan);
    ~CRecordAction();

    //void SetManageSink(CRecordActionManage* pSink)  {
    //  m_ManageSink = pSink;
    //}

public:
    void Clear();
    void DoCmd();

private:
    //CRecordActionManage* m_ManageSink;
    WORD   m_wChairId;         //座位ID
    DWORD  m_dwUserId;         //用户ID

    BYTE   m_cbCard;           //操作的牌
    WORD   m_wCmdMainId;
    WORD   m_wCmdSubId;        //指令ID
//  void*  m_pVoidData;    
    int    m_nLen;
public:
    MSGPACK_DEFINE(m_wCmdMainId, m_wChairId, m_nLen);
};
CRecordAction::CRecordAction(WORD wMainId, WORD wCmdId, WORD wId, void* data, int len, WORD dwTimeSpan) :
    m_wCmdMainId(wMainId),
    m_wCmdSubId(wCmdId),
    m_wChairId(wId),
//  m_pVoidData(data),
    m_nLen(len)
//  m_dwSpan(dwTimeSpan)
{
    ;
/*  if (len != 0)  {
        m_pVoidData = new char[len];
        memcpy_s(m_pVoidData, len, data, len);
    }
    m_ManageSink = NULL;*/
}


CRecordAction::~CRecordAction()
{
    ;
}

int main()
{

    CRecordAction t1(1,2,3,NULL,4,5),t2(6,7,8,NULL,9,10);
    msgpack::sbuffer buffer_;
    msgpack::packer<msgpack::sbuffer>  pack_(&buffer_);
    pack_.pack(t1);//序列化三个对象
    pack_.pack(t2);
    pack_.pack(t2);
    /*生成二进制文件本地保存*/
    std::ofstream of("1.dat",std::ios::binary);
    of.write(buffer_.data(),buffer_.size());
    of.close();
    /*文件二进制读取*/
    std::ifstream is("1.dat",std::ios::binary);
    is.seekg (0, is.end);
    int n = is.tellg();
    is.seekg (0, is.beg);
    msgpack::unpacker unpack_;
    unpack_.reserve_buffer(n);
    is.read(unpack_.buffer(), n);
    unpack_.buffer_consumed(n);
    msgpack::unpacked result_;
    while (unpack_.next(result_))
    {
        std::cout << result_.get() << std::endl;
    }
    system("pause");
    return 0;
}