这是我有:如何将矢量保存到二进制文件?
#include <vector>
#include <fstream>
#include <iostream>
using namespace std;
void saveVector(vector<ObjectName*>);
vector<ObjectName*> readVector();
int main(){
vector<ObjectName*> objects;
int option;
cin >> option;
switch(option){
case 1:{
//read vector
for(int i =0; i < readVector().size(); i++){
objects.push_back(readVector()[i]);
}
break;
}
case 2:{
//save vector
objects.push_back(new ObjectName());
saveVector();
break;
}
return 0;
}
void saveVector(vector<ObjectName*> objects){
ofstream fout("./Binary/ObjectsData.bin", ios::out | ios::binary);
int size1 = objects.size();
fout.write((char*)&size1, sizeof(size1));
fout.write((char*)objects.data(), size1 * sizeof(int));
fout.flush();
fout.close();
}
vector<ObjectName*> readVector(){
vector<ObjectName*> list2;
ifstream is("./Binary/ObjectsData.bin", ios::binary);
int size2;
is.read((char*)&size2, 4);
list2.resize(size2);
is.read((char*)&list2[0], size2 * sizeof(list2));
is.close();
return list2;
}
对象名只是为任何类型的对象的名称。
我在做什么错?如果我得到“对象”矢量大小并将其与“readVector()”矢量大小(第一次执行程序并保存矢量之后)进行比较,则表明它们具有相同的大小,但如果我尝试添加“对象”向量的另一个对象,我得到“分段错误(核心转储)”。有没有更好的方式来保存和读取对象并将它们添加回矢量?
添加'#include'可能会有所帮助。 –
user4581301
保存指向二进制文件的指针没有什么意义。 –
什么是'ObjectName'?和'ObjectType'? – user4581301