错误是:
terminate called after throwing an instance of 'boost::archive::archive_exception
what(): input stream error
Aborted
我的 main.c 中有这些代码
Object *obj = new Object();
{
std::ifstream ifs("FILEX");
boost::archive::text_iarchive ia(ifs);
ia >> *obj;
}
“FILEX”以前可能存在也可能不存在,这是错误的原因吗?或者是 因为我用错误的方式实现了Object类的serialize方法?
最佳答案
使用 ifstream 时我最喜欢的引用页面: http://www.cplusplus.com/reference/iostream/ifstream/
您正在尝试打开“FILEX”两次——我认为这不是您想要做的。我不熟悉 boost::archive,但你至少可以检查 ifs
是否可用:
Object *obj = new Object();
{
std::ifstream ifs("FILEX");
if (ifs.good()) {
boost::archive::text_iarchive ia(ifs);
ia >> *obj;
} else {
// throw an error or something
assert(false);
}
}
关于c++ - boost c++库对象序列化问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4975146/