首页 > 代码库 > boost序列化
boost序列化
#include <iostream>#include <boost/serialization/serialization.hpp>#include <boost/archive/binary_iarchive.hpp>#include <boost/archive/binary_oarchive.hpp>#include <boost/archive/text_iarchive.hpp>#include <boost/archive/text_oarchive.hpp>#include <sstream>#pragma warning (disable: 4244) //解决boost 中binary序列化:“std::streamsize”转换到“size_t”using namespace std;//这里的输入输出,从stringstream到ia或者oa//序列化,文本模式可以用char*然后分配内存,个人认为是流的方式string中是没有/0的然后strcpy(*json, ss.str().c_str());就会出错,下面的解析就有问题//void packetage(char** json, int& len)//不能直接用char* json,因为传递的指针的值会变,需要传递指针的地址//{// std::stringstream ss;// //binary_oarchive表示输出到ss中,这也是用stringstream作为中介的,估计也是用stringstream作为存储的,从oa输出到ss中// boost::archive::text_oarchive oa(ss);// int a = 1;// int b = 2;// oa << a << b;// *json = new char[ss.str().size() + 1];// strcpy(*json, ss.str().c_str());// len = ss.str().size();//}//对于流的方式只能只能传递一个string,然后json = ss.str();void packetage(std::string& json, int& len)//不能直接用char* json,因为传递的指针的值会变,需要传递指针的地址{ std::stringstream ss; //binary_oarchive表示输出到ss中,这也是用stringstream作为中介的,估计也是用stringstream作为存储的,从oa输出到ss中 boost::archive::binary_oarchive oa(ss); int a = 1; int b = 2; oa << a << b; json = ss.str(); //strcpy(*json, ss.str().c_str());//个人感觉这里数据就出错了 len = ss.str().size();}//void parse(char* json, int len)//{// //由于这个是流的方式而不是文本的方式,所以需要长度// //std::stringstream ss(json);//这种方式不行,因为是流,对于文本模式可以// std::stringstream ss(json);// //ss.write(json, len);//需要根据长度手动写入到ss中// boost::archive::text_iarchive ia(ss);//这个是表示输入,只是从stringstream输入到ia中// int a;// int b;// ia >> a >> b;//}void parse(const char* json, int len){ //由于这个是流的方式而不是文本的方式,所以需要长度 //std::stringstream ss(json);//这种方式不行,因为是流,对于文本模式可以 std::stringstream ss; ss.write(json, len);//需要根据长度手动写入到ss中 boost::archive::binary_iarchive ia(ss);//这个是表示输入,只是从stringstream输入到ia中 int a; int b; ia >> a >> b;}int main(){ //char* json = NULL; std::string json; int len = 0; packetage(json, len); parse(json.c_str(), len);//c_str()返回首字符的地址 getchar(); return 0;}
boost序列化
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。