Как преобразовать табличный формат или эквивалентный по формату Python формат данных в формат msgpack в C ++ - PullRequest
0 голосов
/ 29 ноября 2018

(Обратите внимание: я не могу встраивать изображения сюда. У меня недостаточно очков для этого. Может ли кто-нибудь помочь мне с этим.)

Я понимаю, как преобразовать структуру, соответствующую следующемутабличный формат (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, но тщетно.Может ли кто-нибудь помочь мне, как я могу продолжить это?Даже небольшое руководство было бы очень полезно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...