2

32 文字を超える文字列をパックしたいのですが、パッカーは毎回「da」を返します。

32 文字未満の文字列を使用すると、すべて正常に動作します。しかし、より大きな文字列は「da」のみを返します

私のコードは次のようになります:

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 でそれを行う前に

4

1 に答える 1

1

次のコードを試したところ、文字列を取得できました。

// 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

于 2014-08-30T22:03:17.937 に答える