How to convert tuple to byte array in c++11

Deadly 提交于 2019-12-01 08:40:35

There is also the brilliant C++ API for message pack which supports tuples natively

#include <string>
#include <sstream>
#include <tuple>

#include <msgpack.hpp>

int main() {
    auto t = std::make_tuple("1", 1, 1.0);
    auto buffer = std::stringstream{};

    // easy peezy
    msgpack::pack(buffer, t);
    auto tuple_as_string = buffer.str();
}

You can use Boost Serialization for this task together with a small extension for std::tuple. However, it doesn't turn it into a byte array by default, but into something else. There is also binary_oarchive. Perhaps this fits your needs.

#include <fstream>
#include <tuple>

#include <boost/archive/text_oarchive.hpp>

#include "serialize_tuple.h" // https://github.com/Sydius/serialize-tuple

int main()
{
  auto t = std::make_tuple(42,3.14,'a');

  std::ofstream ofs("test.dat");
  boost::archive::text_oarchive oa(ofs);
  oa << t;
}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!