我将多个数据加载到boost::archive::text_oarchive
,现在我需要提取数据。
但由于存档包含多个记录,我需要一个迭代器。
类似
//input archive
boost::archive::text_iarchive iarch(ifs);
//read until the end of file
while (!iarch.eof()){
//read current value
iarch >> temp;
...//do something with temp
}
是否有任何标准方法来迭代存档的元素?
我发现只有iarchive.iterator_type
,但这是我需要的,我该如何使用它?
答案 0 :(得分:0)
您正在查看的迭代器类型实际上来自
class shared_ptr_helper {
...
typedef std::set<
boost::shared_ptr<const void>,
collection_type_compare
> collection_type;
typedef collection_type::const_iterator iterator_type;
在加载归档期间使用,而不是作为外部使用的迭代器我认为。
如果您查看教程下的链接http://www.boost.org/doc/libs/1_53_0/libs/serialization/doc/index.html - &gt; STL Collection您将看到以下示例:
#include <boost/serialization/list.hpp>
class bus_route
{
friend class boost::serialization::access;
std::list<bus_stop *> stops;
template<class Archive>
void serialize(Archive & ar, const unsigned int version)
{
ar & stops;
}
public:
bus_route(){}
};
如果这不是您所需要的,那么您可能需要查看覆盖加载并按http://www.boost.org/doc/libs/1_53_0/libs/serialization/doc/tutorial.html#splitting保存 并根据需要添加处理。