代码如下:

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/

10-13 08:10
查看更多