gpt4 book ai didi

c++ - 将一些数据结构写入文件

转载 作者:太空宇宙 更新时间:2023-11-04 16:20:30 26 4
gpt4 key购买 nike

假设我有一个 Product 类的对象,它有如下成员变量:price、name 等。并说我有 10 个这样的 Product 对象。现在我想将所有 10 个 say 写入某个文件 Products.dat。稍后我想说从文件中检索第 6 个产品。C++中通常是如何实现的? (我只是感兴趣在检索部分)。

最佳答案

检索数据集的方式取决于存储数据的方式。如果您有一个固定大小的结构,您可以使用 fseek(file, dataSize * RecordNr, SEEK_SET); 将文件定位在预期的偏移量处,然后从那里读取数据。这将要求,例如您的字符串,如 name 具有固定的最大长度,并且记录始终以该已知长度存储。

如果您的数据结构是可变长度的,那么您要么计算每条记录的长度,要么必须单独读取它们。在这种情况下,更好的选择可能是使用一些现有的库(如 sqlite 或 XML)来管理您的文件内容。

可变长度结构的另一种替代方法是,维护第二个文件作为索引,您可以在其中存储每个记录的偏移量。

如果您只需要这么少量的记录来进行某些分配,使用带有固定长度记录的 fseek 可能就足够了。

更新

为了使用固定大小的记录,您应该创建没有任何指针的数据结构。否则,您将不得不单独读取/写入这些成员。

例如:

class Product
{
double Price;
int Category;
char Name[50];
char ArticleId[10];
};

代替

class Product
{
double Price;
int Category;
char *Name;
char *ArticleId;
};

不过您应该知道,这样一个固定的结构会使您的程序只能在您编写的平台上运行。您无法轻松地将数据文件复制到其他平台。如果您打算与其他平台兼容,则不应使用这种方法,因为它会使移植变得更加困难。

关于c++ - 将一些数据结构写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17269533/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com