MsgPack c ++打包长度超过32个字符的string

我想打包一个大于32个字符的string,但打包程序每次都返回'da'。

当我使用包含less于32个字符的string都可以正常工作! 但更大的string只返回'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完成之前

我试了下面的代码,并能够检索字符串:

 // 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编译g++ main.cpp -o main -lmsgpack