如何解决C ++ Boost序列化错误:[boost :: archive :: archive_exception类型未捕获的异常:输入流错误-没有这样的过程]
我得到一个错误“ libc ++ abi.dylib:终止于类型为boost :: archive :: archive_exception的未捕获异常:输入流错误-我的程序中没有这样的进程” 。 >
我的程序:
class fruits{
public:
void set(int apple,int mango,int banana){
m_apple = apple;
m_mango = mango;
m_banana = banana;
}
int apple(){return m_apple;}
int mango(){return m_mango;}
int banana(){return m_banana;}
private:
int m_apple,m_mango,m_banana;
friend boost::serialization::access;
template<typename Archive>
void serialize(Archive & arc,unsigned int version){
arc & BOOST_SERIALIZATION_NVP(m_apple);
arc & BOOST_SERIALIZATION_NVP(m_mango);
arc & BOOST_SERIALIZATION_NVP(m_banana);
}
};
void save(std::string fname){
fruits _fruits;
_fruits.set(1,2,3);
std::ofstream of(fname.c_str());
boost::archive::xml_oarchive of_xml(of);
of_xml & BOOST_SERIALIZATION_NVP(_fruits);
of.close();
}
void load(std::string fname){
fruits _fruits;
std::ifstream inf(fname.c_str());
boost::archive::xml_iarchive inf_xml(inf);
inf_xml & BOOST_SERIALIZATION_NVP(_fruits);
std::cout<<"apple : "<<_fruits.apple()<<" mango : "<< _fruits.mango()<<" banana : "<<_fruits.banana()<<"\n";
}
int main(){
std::string fname = "fruits.xml";
save(fname);
load(fname); // this function gives error
return 0;
}
从xml文件还原数据时,我在做错什么吗?但是,如果我将of_xml(of)
更改为of_xml(of,boost::archive::no_header)
,将inf_xml(inf)
更改为inf_xml(inf,boost::archive::no_header)
,则程序将成功执行。如何得到这个错误的家伙?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。