代码如下:
struct Dog {
string name;
unsigned int age;
};
int main()
{
Dog d = {.age = 3, .name = "Lion"};
FILE *fp = fopen("dog.txt", "wb");
fwrite(&d, sizeof(d), 1, fp); //write d into dog.txt
}
我的问题是,将数据对象或结构写入二进制文件有什么意义?我认为这是为了让运行程序中生成的数据持久化,对吧?如果是,那我怎么才能把数据拿回来呢?使用
fread
?这让我想到了数据库之类的东西,数据库是否以同样的方式将数据写入磁盘?
最佳答案
你可以这么做,但你会有很多问题要关心:
结构类型:您的所有数据都需要真正进入struct,或者您只需编写指向其他位置的指针。
结构更改:如果需要更改结构,则需要编写转换器来读取旧结构并编写新结构。
语言互操作性:很难使用其他语言访问数据
在关系数据库普及之前,这是一种常见的做法。可以创建指向记录编号的索引文件。
不过,现在我建议您进行序列化,并编写字符串而不是二进制文件。
注:
如果字符串类似char[40],那么您的代码可能会继续存在。。。但是如果你的问题是关于C++和String是一个类,那么在你长大之前杀死你的孩子!字符串对象字符不在结构中,而是在堆中。
关于c++ - 使用二进制模式将数据结构写入文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11980212/