C++ 将数据结构保存/写入二进制文件,然后在c++;

C++ 将数据结构保存/写入二进制文件,然后在c++;,c++,arrays,binary,char,C++,Arrays,Binary,Char,我有一个char**数组,它存储所有类型的东西,比如结构、整数和字符 char** disk = new char*[100]; 我将每个磁盘块设置为64字节,并使用memcpy存储不同的信息 然后,我需要将这个磁盘保存到一个文件中,在这个文件中我可以再次从它恢复 但我不知道如何将此数据结构保存到二进制文件中,我所知道的只是输出一些文本并使用ifstream从text.txt文件中读取。我不认为这是有效的,所以我的问题是什么是最好的方式将这个磁盘写入一个文件?如何写入二进制文件?我如何恢复它(

我有一个char**数组,它存储所有类型的东西,比如结构、整数和字符

char** disk = new char*[100];
我将每个磁盘块设置为64字节,并使用memcpy存储不同的信息

然后,我需要将这个磁盘保存到一个文件中,在这个文件中我可以再次从它恢复

但我不知道如何将此数据结构保存到二进制文件中,我所知道的只是输出一些文本并使用ifstream从text.txt文件中读取。我不认为这是有效的,所以我的问题是什么是最好的方式将这个磁盘写入一个文件?如何写入二进制文件?我如何恢复它(从中读取?)?你能给我举几个例子吗


谢谢

为什么不
std::vector
?然后基本上可以执行:
for(auto&a:vec){ioBuffer.write(&a[0],a.size());}
,因为向量保证是连续的缓冲区,所以可以强制它写入
a.size()
从第一个元素开始的元素数。不要忘记这是C++,而不是C,所以你不需要限制你自己的原始指针,实际上你不应该真正使用它们,除非真的有必要(向量基本上是一个指针无论如何优化之后)。<代码> STD::FSturt也可以。在担心“最佳方式”之前,请尝试任何方式。从这个问题的编写方式来看,您似乎还没有尝试过。使用一个合理的序列化库怎么样?例如,像boost archive或google protobuf.@πάνταῥεῖ'在这一点上,对象的序列化可能非常麻烦,但最重要的是,如果将对象序列化为文件而不将其转换为特定的endianness,endianness可能会成为一个问题。这样做的目的是,当您从文件中反序列化对象时,不管是哪台计算机写出了文件,因为您已经知道数据是如何存储的,并且可以将其转换为进行反序列化的计算机的endianness。序列化库会为您解决这一问题,或者提供实用程序来轻松完成此任务。@Creris这是项目要求。。。