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 (将#修改为@)