Luc*_*iza 2 c++ linux serialization
我正在做一个需要通过网络发送和接收数据的程序.我从未处理过对象序列化.我对有关Boost和Google Protocol Buffers的一些建议感到厌烦.在Linux中使用哪个最好?
如果您了解其他一些我将非常感谢您的帮助.
谢谢.
我已经使用Boost.Serialization来序列化对象并通过套接字传输它们.它是一个非常灵活的库,如果您可以访问它们,对象可以被侵入地序列化
class Foo
{
public:
template<class Archive>
void serialize(Archive& ar, const unsigned int version)
{
ar & _foo;
ar & _bar;
}
int _foo;
int _bar;
};
Run Code Online (Sandbox Code Playgroud)
如果您无权访问需要序列化的对象,则可以非侵入式地进行
namespace boost {
namespace serialization {
template<class Archive>
void serialize(Archive& ar, Foo& f, const unsigned int version)
{
ar & f._foo;
ar & f._bar;
}
} // namespace serialization
} // namespace boost
Run Code Online (Sandbox Code Playgroud)
如果没有公开其成员(_foo和_bar这里),有序列化Foo的技巧,文档很好地解释了这一点.要序列化Foo,可以使用boost::archive命名空间中的对象:text,binary或xml.
std::stringstream ss;
boost::archive::text_oarchive ar( ss );
Foo foo;
foo._foo = 1;
foo._bar = 2;
ar << foo;
Run Code Online (Sandbox Code Playgroud)
将存档重建为Foo对象就像这样完成
boost::archive::text_iarchive ar( ss );
Foo foo
ar >> foo;
Run Code Online (Sandbox Code Playgroud)
请注意,此示例相当简单,显然当您引入网络时,您将使用套接字和缓冲区.
| 归档时间: |
|
| 查看次数: |
1750 次 |
| 最近记录: |