微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

C ++ Boost序列化错误:[boost :: archive :: archive_exception类型未捕获的异常:输入流错误-没有这样的过程]

如何解决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 举报,一经查实,本站将立刻删除。