这是我的课程外观:
如何修复这个问题?有什么想法吗?
#include <iostream>
#include <boost/dynamic_bitset/dynamic_bitset.hpp>
#include <vector>
#include <fstream>
// include headers that implement a archive in simple text format
#include <boost/archive/text_oarchive.hpp>
#include <boost/archive/text_iarchive.hpp>
#include <boost/serialization/vector.hpp>
using namespace std;
using namespace boost;
class outer{
friend class boost::serialization::access;
public:
int a;
class inner{
friend class boost::serialization::access;
public:
int a;
inner(int a){
this->a = a;
}
template<class Archive>
void serialize(Archive & ar,const unsigned int version){
ar & a;
}
inner(){
}
};
vector<inner> inners;
outer(int a){
this->a = a;
inners.push_back(inner(this->a+1));
}
outer(){
}
template<class Archive>
void serialize(Archive & ar,const unsigned int version){
ar & a;
ar & inners;
}
};
vector<outer> outers;
vector<outer> _outers;
BOOST_CLASS_EXPORT(outer);
int main(int, char*[]) {
int i;
std::ofstream ofs("filename.dat");
for(i=0;i<5;i++)
outers.push_back(outer(i));
boost::archive::text_oarchive oa(ofs);
oa << outers;
std::ifstream ifs("filename.dat");
boost::archive::text_iarchive ia(ifs);
// read class state from archive
ia >> _outers;
return EXIT_SUCCESS;
}
我创建了一个outer
类实例的向量,并将其写入文本流(似乎工作正常)。但当我读取它时,出现错误:
terminate called after throwing an instance of 'boost::archive::archive_exception'
what(): input stream error
上面是完整的自包含代码,使用以下命令进行编译:
g++ -I /path/to/boost test.cpp -lboost_serialization
如何修复这个问题?有什么想法吗?
outers
是一个outer
类实例的向量。 - sanjeev mk