【发布时间】:2015-12-20 11:11:39
【问题描述】:
我是 C++ 的初学者,我编写了这段代码来测试我是否可以将向量写入二进制文件,然后再从文件中读取向量。 这是代码:
vector <student> stud;
vector <student> temp;
void makeObj (string name, int age)
{
student newstudent (nam, ag);
stud.push_back(newstudent);
}
int main ()
{
makeObj("kwame", 14);
stud[0].print();
makeObj("kojo", 12);
stud[1].print();
makeObj("kwabena", 7);
stud[2].print();
fstream gameSave ("gameSaveFile.txt", ios::binary | ios::out | ios::in);
gameSave.write( (char *) &stud, sizeof(stud));
gameSave.seekg(0);
gameSave.read( (char *) &temp, sizeof(stud));
temp[0].print();
gameSave.close();
return 0;
}
当我运行代码时,程序运行时发生未知错误,我无法弄清楚这是什么错误。起初我认为这可能是演员阵容的错误。所以我决定像这样使用 reinterpret_cast 来转换向量:reinterpret_cast< char *>(&stud)但这并没有解决问题。但是当我只是将向量写入文件而不尝试读取它时,代码可以成功运行而没有任何错误。
当我尝试读取向量时,有人知道是什么导致了我的代码中的错误吗?以及我遇到的那种错误。 我可以在没有任何错误的情况下从文件中写入和读取向量的正确方法是什么。
【问题讨论】: