boost序列化字符串流错误

boost serialization stringstream error

本文关键字:错误 字符串 序列化 boost      更新时间:2023-10-16

所以。。。

每当我运行以下内容时:

#inlcude <iostream>
#include <sstream>
#include <boost/archive/text_oarchive.hpp>
#include <boost/archive/text_iarchive.hpp>
using namespace std;
class gps_position
{
private:
    friend class boost::serialization::access;
    template<class Archive>
    void serialize(Archive & ar, const unsigned int version)
    {
        ar & degrees;
        ar & minutes;
        ar & seconds;
    }
    int degrees;
    int minutes;
    float seconds;
public:
    gps_position(){};
    gps_position(int d, int m, float s) :
        degrees(d), minutes(m), seconds(s)
    {}
};
int main() {
    stringstream ss1;
    const gps_position g(35, 59, 24.567f);
    {
        boost::archive::text_oarchive oa(ss1);
        oa << g;
    }
    gps_position newg;
    {
        stringstream ss2;
        boost::archive::text_iarchive ia(ss2);
        ia >> newg;
    }
    return 0;
}

我得到以下错误:

terminate called after throwing an instance of 'boost::archive::archive_exception'
   what():   output stream error
Aborted

所以。。。这让我很困惑…任何帮助都会很棒!

谢谢!

main中填充ss1,然后创建一个名为ss2的新std::stringstream,并尝试从中读取。你认为这是怎么回事?很明显,ss2不包含任何数据。