0

複数のデータをにロードしまし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たのはそれだけですが、それは私が必要としているものであり、どのように使用すればよいですか?

4

1 に答える 1

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;

これは、外部で使用するためのイテレータではなく、アーカイブのロード中に使用されると思います。

チュートリアル->STLコレクションの下のリンクhttp://www.boost.org/doc/libs/1_53_0/libs/serialization/doc/index.htmlを見ると、次の例が表示されます。

#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のように、ロードのオーバーライドと保存を確認する必要があります。 必要に応じて処理を追加します。

于 2013-03-25T14:53:37.960 に答える