我想使用运算符“<<”将对象序列化为二进制文件,但是 例如,当我序列化 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/