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

前端 未结 2 1426
梦毁少年i
梦毁少年i 2021-01-14 16:02

I need to write a function to convert tuple to byte array. The type of tuple may include int, long, double, std::string, char*,etc. The size and type of tuple a

相关标签:
2条回答
  • 2021-01-14 16:44

    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();
    }
    
    0 讨论(0)
  • 2021-01-14 16:54

    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;
    }
    
    0 讨论(0)
提交回复
热议问题