Boost logo

Boost Users :

From: Thomas D'Silva (twdsilva_at_[hidden])
Date: 2006-10-03 11:04:20


Hello,

I am trying to save and load a vector<map<string,map<string,int> > > to an
axml archive. I am able to save the xml archive properly, but I cannot read
the saved archive. I have examined the XML file that is generated and it
does not seem to have any errors. I get the following assertion error when I
try to load the file. Any help would be appreciated.

Thank you,
Thomas

/include/boost/serialization/collections_load_imp.hpp:69: void
boost::serialization::stl::archive_input_map<Archive,
Container>::operator()(Archive&, Container&) [with Archive =
boost::archive::xml_iarchive, Container = std::map<std::string, int,
std::less<std::string>, std::allocator<std::pair<const std::string, int> >
>]: Assertion `result.second' failed.

#include <boost/archive/xml_oarchive.hpp>
#include <boost/archive/xml_iarchive.hpp>
#include <boost/serialization/vector.hpp>
#include <boost/serialization/map.hpp>
#include <boost/serialization/string.hpp>
#include <boost/serialization/nvp.hpp>

using namespace std;
using namespace boost::filesystem;

class DistributionTable
{
    private:
        friend class boost::serialization::access;
        template<class Archive>
        void serialize(Archive & ar, const unsigned int version) {
            ar & BOOST_SERIALIZATION_NVP(neTable);
            ar & BOOST_SERIALIZATION_NVP(mappedTable);
        }
        vector<map<string,map<string,int> > > neTable;
        vector<map<string,map<string,int> > > mappedTable;
    public:
        DistributionTable(){};
       void saveTable(const DistributionTable &t, string filename);
       void loadTable(DistributionTable &t, string filename);
};

void DistributionTable::saveTable(const DistributionTable &t, string
filename) {
    ofstream ofs(filename.c_str());
    boost::archive::xml_oarchive oa(ofs);
    oa <<BOOST_SERIALIZATION_NVP(t);
}

void DistributionTable::loadTable(DistributionTable &t, string filename) {
    ifstream ifs(filename.c_str());
    boost::archive::xml_iarchive ia(ifs);
    ia >>BOOST_SERIALIZATION_NVP(t);
}



Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net