在C ++中将结构数组保存到外部文件

Saving a struct array to an external file in c++

我有一个作业需要:

  1. 将用户输入的列表保存到外部文件。
  2. 从之前保存的文件中加载信息。

我成功地写出了第一个任务的代码,但是由于我有错误,我无法继续第二个任务。请看一看,让我知道你的想法。

第一个错误:

创建数组时,数组的名称是指向数组在内存中的起始位置的指针。在第 42 行,您不能像那样比较 int 和指针。相反,我假设您想这样做:

for (int i = 0; i < size; ++i) {

第二个错误:

在第 43 行中,您试图将 std::ofstream 对象输入到函数中。为此,std::ofstream 必须是可复制的。 ofstream 有一个删除的复制构造函数,这意味着它不能被复制,因此不能作为函数的输入传递。相反,您可以简单地创建 ofstream 对象并在 pet::save 函数中打开文件。另外,请确保关闭 ofstream。例如:

void pet::save()
{
   ofstream file;
   out.open("animal.txt");
   if (!out.is_open())
      cout << "Unable of open file." << endl;
   file << pet_info << endl;
   file.close();
}

您还可以使用指向 ofstream 的指针作为保存函数的输入,因为可以复制指针(然后使用 out->operator<<(pet_info) 输入文件)。这会使它 运行 更快,但这种情况似乎并没有提示这种优化。函数原型看起来像

void pet::save(ofstream* file);

并且您会将 &out 作为函数的输入传递。

第三个错误:

您正在尝试在您的宠物中使用名为 animal 的数组 class。由于 animal 是在宠物 class 之外创建的宠物数组,因此宠物 class 无法访问它(因此 animal 未在 pet 范围内声明)。我猜你的宠物 class 存储了一个包含宠物信息的字符串(我称之为 pet_info)。如果这是真的,你可以调用我为动物数组中的所有宠物编写的上述保存函数,将它们保存到文件中。

第四个错误:

在 pet.cpp 的第 109 行,您似乎缺少一个分号。这可能就是出现括号错误的原因,或者您只是缺少一个括号。