我已阅读了Stack Overflow和其他一些关于将向量写入文件的网站的几篇文章。我已经实现了我感觉的工作,但我遇到了一些麻烦。结构中的一个数据成员是一个类字符串,并且在重新读入该向量时,该数据将丢失。另外,在编写第一次迭代之后,其他迭代会导致malloc错误。如何修改下面的代码以实现我想要的将矢量保存到文件的能力,然后在程序再次启动时再读入它?目前,读取是在构造函数中写入一个只有数据成员是矢量的类的析构函数中完成的,但它具有操作该矢量的方法。读取和写入结构向量的文件
这是我读/写方法的要点。假设vector<element> elements
...
阅读:
ifstream infile;
infile.open("data.dat", ios::in | ios::binary);
infile.seekg (0, ios::end);
elements.resize(infile.tellg()/sizeof(element));
infile.seekg (0, ios::beg);
infile.read((char *) &elements[0], elements.capacity()*sizeof(element));
infile.close();
写:
ofstream outfile;
outfile.open("data.dat", ios::out | ios::binary | ios_base::trunc);
elements.resize(elements.size());
outfile.write((char *) &elements[0], elements.size() * sizeof(element));
outfile.close();
STRUCT元件:
struct element {
int id;
string test;
int other;
};
你用什么C++学习资料告诉你这样做文件访问? – 2010-11-29 01:18:41
这是一项家庭作业的一部分,它要求我们使用fstream将矢量数据读/写到文件中。由于我们没有完全覆盖向班级中的文件进行复杂的矢量写入,因此我阅读了fstream文档等,并在线查看了示例。我决定用二进制文字编写是最简单的方法。调整大小等某些细节是我选择要限制的文件大小。我们没有正式的书或教材。我们有一些在线笔记,但它们并不像实现我所需要的那么详细。 – 2010-11-29 01:38:24