C++序列化和反序列化工具
在开发时我们经常会遇到需要序列号和反序列化得操作。比如将程序配置导出下次打开再从配置中读取,通常你可以将信息保存成json、xml或ini格式,让后再解析出来。更常见的情形是我们通过网络发送和接收数据,也涉及到序列化和反序列化操作,当让你可以使用protobuf、msgpack等序列化库。但是如果你只是个简单程序,或者序列化和反序列化的业务不是很重,不想搞得那么复杂有什么简单的方法吗?
最直接的方法 直接按字节拷贝,见代码:
#include <string> bool encode(const std::string& s, int32_t a, int32_t b, int32_t c, std::string& buf) { int32_t d = static_cast<int32_t>(s.length()); if (buf.size() < (sizeof(int32_t) * 4 + d)) return false; std::size_t pos = 0; memcpy(buf.data() + pos, &a, sizeof(int32_t)); pos += sizeof(int32_t); memcpy(buf.data() + pos, &b, sizeof(int32_t)); pos += sizeof(int32_t); memcpy(buf.data() + pos, &c, sizeof(int32_t)); pos += sizeof(int32_t); memcpy(buf.data() + pos, &d, sizeof(int32_t)); pos += sizeof(int32_t); memcpy(buf.data() + pos, s.