mik*_*e_b 1 c++ fstream vector
我已经阅读了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();
Run Code Online (Sandbox Code Playgroud)
写:
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();
Run Code Online (Sandbox Code Playgroud)
结构元素:
struct element {
int id;
string test;
int other;
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3678 次 |
| 最近记录: |