C++ Boost Serialize-以自定义方式序列化数据
如果我使用Boost序列化来序列化整数:C++ Boost Serialize-以自定义方式序列化数据,c++,serialization,boost,C++,Serialization,Boost,如果我使用Boost序列化来序列化整数: #include <boost/archive/text_oarchive.hpp> #include <iostream> int main() { boost::archive::text_oarchive oa(std::cout); int i = 1; oa << i; } #包括 #包括 int main() { boost::archive::text\u oarchive
#include <boost/archive/text_oarchive.hpp>
#include <iostream>
int main()
{
boost::archive::text_oarchive oa(std::cout);
int i = 1;
oa << i;
}
#包括
#包括
int main()
{
boost::archive::text\u oarchive oa(std::cout);
int i=1;
oa您可以编写自己的归档文件,如下所示:
#include <cstddef> // std::size_t
#include <string>
#include <typeid>
template <typename T>
std::string printName() {
// Unmangle for your platform or just specialise for types you care about:
return typeid(T).name();
}
//////////////////////////////////////////////////////////////
// class trivial_oarchive
class trivial_oarchive {
public:
//////////////////////////////////////////////////////////
// public interface used by programs that use the
// serialization library
typedef boost::mpl::bool_<true> is_saving;
typedef boost::mpl::bool_<false> is_loading;
template<class T> register_type(){}
template<class T> trivial_oarchive & operator<<(const T & t){
return *this;
}
template<class T> trivial_oarchive & operator&(const T & t){
// No idea why you'd want to add 10, but this does it:
return *this << printName<T>() << " " << (t+10);
}
void save_binary(void *address, std::size_t count){};
};
#包括//std::size\t
#包括
#包括
模板
std::string printName(){
//为您的平台解开束缚,或只专注于您关心的类型:
返回typeid(T.name();
}
//////////////////////////////////////////////////////////////
//类琐碎的
类琐碎的{
公众:
//////////////////////////////////////////////////////////
//由使用
//序列化库
typedef boost::mpl::bool_u正在保存;
typedef boost::mpl::bool_uu正在加载;
模板寄存器类型(){}
模板琐碎\u oarchive&operator如果不需要反序列化,序列化的目的是什么?另一个应用程序将反序列化数据。此应用程序需要特定格式的数据,我希望使用Boost serialize进行序列化。其思想是,用户以后可以选择几种序列化方式(根据他想要发送到的应用程序)。开发人员只需要实现一个序列化方法。但我目前正在设计和测试该概念的工作原理。我明白了。您可以指示Boost.Serialization不要添加像22 Serialization::archive
这样的头文件,并且您可以创建自己的存档文件,以您希望的格式写入数据。或者根据需要编写如果将y转换为预定义格式,您可能会发现它很有用?谢谢您的指针,我会记住它。