代码如下所示:
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
?
这让我想到了类似数据库的东西,数据库以同样的方式将数据写入磁盘?
最佳答案
你可以做到,但是你会有很多问题需要关心:
- 结构类型:您的所有数据真的都需要放入结构中,或者您可以只写一个指向其他地方的指针。
- 结构更改:如果您需要更改结构,则需要编写一个转换器来读取旧结构并编写新结构。
- 语言互操作性:将很难使用其他语言访问数据
在关系数据库普及之前的早期,这是一种常见的做法。您可以使索引文件指向记录号。
但是现在我会建议您进行序列化并编写字符串而不是二进制文件。
注意: 如果字符串类似于 char[40] 你的代码可能会存活下来......字符串对象字符不在您的结构中,而是在堆中。
关于c++ - 使用二进制模式将数据结构写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11980212/