fork download
  1. #include <vector>
  2. #include <iostream>
  3. #include <fstream>
  4. #include <sstream>
  5.  
  6. class BaseSaveFile {
  7.  
  8. protected:
  9. std::vector<float> first_vector;
  10.  
  11. public:
  12. void fill_vector(std::vector<float> fill) {
  13. first_vector = fill;
  14. }
  15. void show_vector() {
  16. for ( auto x: first_vector )
  17. std::cout << x << std::endl;
  18. }
  19. std::istream& load(std::istream& is){
  20. size_t vsize;
  21. if(is.read((char*)&vsize, sizeof(vsize))) {
  22. first_vector.resize(vsize);
  23. is.read((char*)first_vector.data(), vsize*sizeof(float));
  24. }
  25. return is;
  26. }
  27. std::ostream& save(std::ostream& os){
  28. size_t vsize=first_vector.size();
  29. os.write((char*)&vsize, sizeof(vsize));
  30. os.write((char*)first_vector.data(), vsize*sizeof(float));
  31. return os;
  32. }
  33.  
  34. };
  35.  
  36.  
  37. class DerivedSaveFile : public BaseSaveFile {
  38.  
  39.  
  40. };
  41.  
  42.  
  43. int main ( int argc, char **argv) {
  44.  
  45. DerivedSaveFile derived;
  46. std::vector<float> fill;
  47. for ( auto i = 0; i < 10; i++) {
  48. fill.push_back(i);
  49. }
  50. derived.fill_vector(fill);
  51.  
  52. std::cout<<"Original:"<<std::endl;
  53. derived.show_vector();
  54.  
  55. std::stringstream ios;
  56. derived.save(ios);
  57. ios.seekp(0);
  58.  
  59. std::cout<<"Reloaded:"<<std::endl;
  60. DerivedSaveFile d2;
  61. d2.load(ios);
  62. d2.show_vector();
  63.  
  64. }
Success #stdin #stdout 0s 15240KB
stdin
Standard input is empty
stdout
Original:
0
1
2
3
4
5
6
7
8
9
Reloaded:
0
1
2
3
4
5
6
7
8
9