我想写一个二进制文件,但是当我打开它时,我可以阅读那里有什么。这很自然吗?我知道二进制文件只能由计算机解释。我很困惑,请帮忙。 这是我的代码:
Product p;
create(p);
std::ofstream myfile("example.bin",std::ios::out | std::ios::binary);
myfile << p;
myfile.close();
friend std::istream& operator >> (std::istream &is, Product& prod);
friend std::ostream& operator <<(std::ostream &os, const Product& prod);
答案 0 :(得分:3)
您不应将<<
运算符与二进制文件一起使用,它应与文本文件一起使用。
您应该使用ostream的write(...)
方法。
在你的情况下:
Product p;
create(p);
std::ofstream myfile("example.bin", std::ios::out | std::ios::binary);
myfile.write(&p, sizeof(p));
myfile.close();
答案 1 :(得分:0)
要写入二进制文件,需要使用write,
写(const char * s,streamsize n);
使用reinterprete_cast作为指针,并将对象的大小传递给它。
如果是pod(使用std :: is_pod_v&lt;&gt;进行测试),则可以使用
myfile.write(reinterpret_cas<const char *>(&p), sizeof(p))
否则,您必须使用序列化程序(如boost serializer
)序列化您的对象