cereal
v1.3.2
breakfast 是一个仅包含头文件的 C++11 序列化库。谷物接受任意数据类型,并将它们可逆地转换为不同的表示形式,例如紧凑的二进制编码、XML 或 JSON。谷物被设计为快速、轻量级且易于扩展 - 它没有外部依赖项,可以轻松地与其他代码捆绑在一起或独立使用。
寻找有关谷物食品如何工作及其文档的更多信息?访问谷物食品的网页以获取最新信息。
谷物的安装和使用在主页上有完整的记录,但这是一个快速而肮脏的版本:
# include < cereal/types/unordered_map.hpp >
# include < cereal/types/memory.hpp >
# include < cereal/archives/binary.hpp >
# include < fstream >
struct MyRecord
{
uint8_t x, y;
float z;
template < class Archive >
void serialize ( Archive & ar )
{
ar ( x, y, z );
}
};
struct SomeData
{
int32_t id;
std::shared_ptr<std::unordered_map< uint32_t , MyRecord>> data;
template < class Archive >
void save ( Archive & ar ) const
{
ar ( data );
}
template < class Archive >
void load ( Archive & ar )
{
static int32_t idGen = 0 ;
id = idGen++;
ar ( data );
}
};
int main ()
{
std::ofstream os ( " out.cereal " , std::ios::binary);
cereal::BinaryOutputArchive archive ( os );
SomeData myData;
archive ( myData );
return 0 ;
}
通过电子邮件或网络联系。
麦片是根据 BSD 许可证获得许可的。
您在寻找 Haskell 麦片吗?去这里吧。