【发布时间】:2014-04-29 06:54:03
【问题描述】:
我有一个名为 Game 的类,其中包含以下内容:
vector<shared_ptr<A>> attr; // attributes
D diff; // differences
vector<shared_ptr<C>> change; // change
我的问题是,如何将这些(保存)写入文件并稍后读取/加载?
我考虑过使用带有这些的struct,并简单地保存struct,但我不知道从哪里开始。
这是我目前的尝试,只是尝试保存change。我已经阅读了很多关于这个问题的内容,我的问题(其中一个,无论如何)似乎是我存储的指针在关闭程序后将无效(再加上我也在退出之前释放它们的事实)。
/* Saves state to file */
void Game::saveGame(string toFile) {
ofstream ofs(toFile, ios::binary);
ofs.write((char *)&this->change, sizeof(C));
/* Free memory code here */
....
exit(0);
};
/* Loads game state from file */
void Game::loadGame(string fromFile) {
ifstream ifs(fromFile, ios::binary);
ifs.read((char *)&this->change, sizeof(C));
this->change.toString(); // display load results
};
谁能指导我正确的方向来序列化这些数据?我只想使用标准包,所以不要boost。
谢谢。
【问题讨论】:
-
你有办法将单个 A 或 C 写入磁盘吗?也许你应该先解决这个问题。
-
您是否有理由使用指针使事情复杂化?在任何情况下,首先为单个
A和C编写代码,然后存储元素计数,然后存储元素。要加载,请读取元素计数和循环。
标签: c++ pointers serialization save