agrippa1994

stream

Dec 10th, 2013
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.79 KB | None | 0 0
  1. #import <Foundation/Foundation.h>
  2.  
  3. #include <boost/archive/binary_oarchive.hpp>
  4. #include <boost/archive/binary_iarchive.hpp>
  5. #include <boost/archive/text_iarchive.hpp>
  6. #include <boost/archive/text_oarchive.hpp>
  7. #include <boost/iostreams/stream.hpp>
  8. #include <boost/asio.hpp>
  9. #include <boost/regex.h>
  10. #include <boost/iostreams/device/back_inserter.hpp>
  11.  
  12.  
  13. #include <iostream>
  14. #include <vector>
  15. #include <sstream>
  16. #include <ostream>
  17. #include <istream>
  18. #include <chrono>
  19. #include <thread>
  20. #include <memory>
  21.  
  22. using namespace std;
  23.  
  24. class Test
  25. {
  26.     friend class boost::serialization::access;
  27.     template<typename Archive> void serialize(Archive& ar, const unsigned int version)
  28.     {
  29.         ar & _x;
  30.     }
  31.    
  32.     int _x;
  33.    
  34. public:
  35.     Test(int x) : _x(x) { }
  36.     Test() { }
  37.    
  38.     void setX(int x) { _x = x; }
  39.     int  getX() { return _x; }
  40. };
  41.  
  42.  
  43. int main(int argc, const char * argv[])
  44. {
  45.  
  46.     std::string serial_str;
  47.     {
  48.        
  49.         boost::iostreams::back_insert_device<std::string> inserter(serial_str);
  50.         boost::iostreams::stream<boost::iostreams::back_insert_device<std::string> > streamer(inserter);
  51.         boost::archive::text_oarchive archive(streamer);
  52.        
  53.         Test t(20);
  54.         archive << t;
  55.         streamer.flush();
  56.        
  57.        
  58.     }
  59.     vector<unsigned char> data(serial_str.begin(), serial_str.end());
  60.     unsigned char *szData = data.data();
  61.     size_t len = data.size();
  62.    
  63.     {
  64.         Test t2;
  65.         boost::iostreams::basic_array_source<char> device((const char *)szData, len);
  66.         boost::iostreams::stream<boost::iostreams::basic_array_source<char> > s(device);
  67.         boost::archive::text_iarchive ia(s);
  68.        
  69.         ia >> t2;
  70.    
  71.         cout << t2.getX() << endl;
  72.     }
  73.    
  74.  
  75.     return 0;
  76. }
Add Comment
Please, Sign In to add comment