如何在C ++中将表格格式或python数据框等效格式转换为msgpack格式

时间:2018-11-29 17:29:49

标签: python c++ struct msgpack hexdump

(请注意:我无法在此处嵌入图像。我没有足够的积分。有人可以帮我吗。)

我了解如何将与以下表格格式(Struct1)相对应的结构转换为msgpack格式:

Struct1

为此,我使用以下代码:

#include <sstream>
#include <iostream>
#include <msgpack.hpp>

inline std::ostream& hex_dump(std::ostream& o, std::string const& v) {
    std::ios::fmtflags f(o.flags());
    o << std::hex;
    o << "b\'";
    for (auto c : v) {
        o << "\\x" << std::setw(2) << std::setfill('0') << (static_cast<int>(c) & 0xff);
    }
    o << "\'";
    o.flags(f);
    return o;
}

struct your_type {
    int a;
    int b;
    MSGPACK_DEFINE(a, b);
};

int main() {
    // packing
    std::stringstream ss;
    std::stringstream sshex;
    std::string ssnew;
    std::vector<std::map<std::string, your_type>> v
    {
        {
            { "t",{ 1, 2} }

        },
        //{
            { "value",{6, 5 } }
        }
    };

    msgpack::pack(ss, v);


    auto oh = msgpack::unpack(ss.str().data(), ss.str().size());
    // JSON output
    std::cout << oh.get() << std::endl;

    std::cout << std::endl;
    // hex dump output
    hex_dump(sshex, ss.str()) << std::endl;

    std::cout << sshex.str();

    ssnew = sshex.str();

    return ssnew;

}

现在,我想尝试将以下内容转换为相同格式:

我想在循环中添加每一行,将值通过循环传递到结构,然后转换为msgpack格式。再次,在添加另一行之后重复该过程。我不想像以前一样静态定义值。例如:

第一次-传递用于转换的数据(Struct2):

Struct2

第二时间-传递用于转换的数据(Struct3): Struct3

我尝试将int用于t并将int数组用于val。我无法继续进行。我研究了msgpack库,但徒劳无功。有人可以帮我吗,我该如何进行?甚至一点指导也将很有帮助。

0 个答案:

没有答案