c++ - 使用 iostream << 序列化用户对象

标签 c++ serialization iostream

我想使用运算符“<<”将对象序列化为二进制文件,但是 例如,当我序列化 int 字段时,我获得了它的符号表示:

ofstream out("file", ios::out | ios::binary);
int i=0xAA;
out << i;

并输出:

0x31 0x37 0x30

即(0xAA -> 170)

170

如果我使用写入功能,一切正常:

out.write((char*)&i,sizeof(int));

输出:

0xAA 0x00 0x00 0x00

但是我可以使用 << 代替编写函数来序列化对象吗? 喜欢:

out << obj.field1 << obj.field2; // etc.

最佳答案

对于 std::ostream 和派生类,operator<< 是格式化输出函数。另一方面,write() 是一个未格式化的输出函数。所以对于 ostreams,答案是否定的。

另一方面,您可以考虑使用 Boost.Serialization ,您可以使用 << 运算符序列化为二进制存档。

关于c++ - 使用 iostream << 序列化用户对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3901209/

相关文章:

c++ - 如何在 C++ 中检查 std::cout 是否重定向到文件?

c++ - iostream是否占用堆栈空间?

c++ - 播放流声音OpenAL

c++ - C++/Qt 的 RESTful 接口(interface)?

serialization - Java 的 transient 在 Serde 中的等价物是什么?

Java 6 虚拟机调用 Java 4 虚拟机

c++ - 如何比较两个 std::istream 引用?

c++ - 用于 C/C++ 的 LAPACK 包装器

c++ - 如何在不直接调用函数的情况下将值返回给主函数

c++ - boost::dynamic_bitset 如何存储位