這是我有:如何將矢量保存到二進制文件?
#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