在C ++中将结构数组保存到外部文件
Saving a struct array to an external file in c++
我有一个作业需要:
- 将用户输入的列表保存到外部文件。
- 从之前保存的文件中加载信息。
我成功地写出了第一个任务的代码,但是由于我有错误,我无法继续第二个任务。请看一看,让我知道你的想法。
第一个错误:
创建数组时,数组的名称是指向数组在内存中的起始位置的指针。在第 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 行,您似乎缺少一个分号。这可能就是出现括号错误的原因,或者您只是缺少一个括号。
我有一个作业需要:
- 将用户输入的列表保存到外部文件。
- 从之前保存的文件中加载信息。
我成功地写出了第一个任务的代码,但是由于我有错误,我无法继续第二个任务。请看一看,让我知道你的想法。
第一个错误:
创建数组时,数组的名称是指向数组在内存中的起始位置的指针。在第 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 行,您似乎缺少一个分号。这可能就是出现括号错误的原因,或者您只是缺少一个括号。