boost序列化
2014-09-15 00:14
176 查看
#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 - 序列化 (Serialization)
- Boost - 序列化 (Serialization)
- Boost文本序列化和二进制序列化的效率比较
- boost序列化(Serialization)
- boost序列化
- Boost文本序列化和二进制序列化的效率比较
- boost序列化多态类指针的例子
- Boost - 序列化 (Serialization)
- Boost - 序列化 (Serialization) (写得很好**)
- boost::serialization 多态(polymorphic)序列化技巧及分析
- Boost文本序列化和二进制序列化的效率
- 序列化-boost
- C++11 下使用 Boost.Serialization 库实现智能指针的序列化
- Boost序列化之一
- boost中的序列化类使用
- boost序列化问题(一)
- 测试了下boost的序列化反序列化功能
- Boost序列化学习之二——binary_oarchive追本溯源
- 7 C++ Boost 序列化
- c++ python交互之boost.python 简集之序列化(pickle)