MsgPack c ++ упаковывает строку длиннее 32 символов [Ubuntu]

Я хочу упаковать строку длиной более 32 символов, но упаковщик возвращает каждый раз «да».

Когда я использую строку, которая содержит менее 32 символов, все работает отлично! Но большая строка возвращает только «да»

мой код выглядит следующим образом:

msgpack::sbuffer sbuffer;
msgpack::packer<msgpack::sbuffer> packer(&sbuffer);

packer.pack(string("hello this is a string larger than 32 bytes"));

также попробовал это:

packer.pack_raw(43);
packer.pack_raw_body("hello this is a string larger than 32 bytes", 43);

В обоих случаях возвращаем:

'da'

любая идея?

Спасибо за помощь

редактировать: я исправил проблему … я переустановил его с помощью cmake, и теперь он работает. Прежде чем я сделал это с ./configure

2

Решение

Я попробовал следующий код и смог получить строку:

// main.cpp
#include <iostream>
#include <string>
#include <vector>
#include <msgpack.hpp>

int main(int argc, char const *argv[])
{

msgpack::sbuffer sbuf;
msgpack::packer<msgpack::sbuffer> packer(&sbuf);

packer.pack_raw(43);
packer.pack_raw_body("hello this is a string larger than 32 bytes", 43);

msgpack::unpacked msg;
msgpack::unpack(&msg, sbuf.data(), sbuf.size());
msgpack::object obj = msg.get();

std::cout << obj << std::endl;

return 0;
}

Составлено с g++ main.cpp -o main -lmsgpack

1

Другие решения


По вопросам рекламы [email protected]