【发布时间】:2021-08-19 13:57:19
【问题描述】:
我正在尝试在 Visual Studio 中将具有多种数据类型的 C++ 结构序列化为二进制文件,并一次将它们全部反序列化。但是在读回数据时面临字符串内存分配的问题。我知道问题出在哪里,还有其他我可以使用的开源库,但我不想使用它们,除非确实有必要,而且我也知道我可以一个一个地写入/读取数据类型,但这种方法是对于包含大量数据类型的结构来说太长了。我想在不使用任何开源库的情况下一次性执行写/读操作。 下面是一个结构示例:
struct Frame {
bool isPass{ true };
uint64_t address{ 0 };
uint32_t age{ 0 };
float marks{ 0.0 };
std::string userName;
};
有没有办法以二进制格式一次性执行写/读操作? 谢谢你
【问题讨论】:
-
我强烈建议您使用开源库(boost 非常好),序列化充满了细微差别和陷阱。一旦你不处理琐碎的类型,你就有麻烦了。此外,即使是普通类型,您也会面临与大小 edian 的兼容性问题。
-
简短的回答是否定的。
-
所以 protobuf 或 boost::serialization 是我唯一的选择 ????,谢谢大家...
标签: c++ visual-c++ binary-serialization