Advertisement
Guest User

Untitled

a guest
Jan 22nd, 2020
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.22 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <string>
  4. #include <vector>
  5. using namespace std;
  6.  
  7. struct Record {
  8. int a, b;
  9. vector<string> v;
  10. Record() : a(), b() {}
  11. Record(int a, int b) : a(a), b(b) {}
  12. void add(string s) { v.push_back(s); }
  13. };
  14.  
  15. bool output(Record& vehicle) {
  16. string plateNumber("12345");
  17. ofstream out(plateNumber, ios::binary);
  18. if (!out)
  19. return false;
  20.  
  21. out.write(reinterpret_cast<char*>(&vehicle.a), sizeof(int));
  22. out.write(reinterpret_cast<char*>(&vehicle.b), sizeof(int));
  23.  
  24. // Write the size of the vector.
  25. size_t size = vehicle.v.size();
  26. out.write(reinterpret_cast<char*>(&size), sizeof size);
  27.  
  28. // Write the vector data.
  29. for (size_t i = 0; i < vehicle.v.size(); i++) {
  30. // Write the size of the string.
  31. size = vehicle.v[i].size();
  32. out.write(reinterpret_cast<char*>(&size), sizeof size);
  33.  
  34. // Write the string data.
  35. const char* p = vehicle.v[i].data();
  36. out.write(p, vehicle.v[i].size());
  37. }
  38.  
  39. return true;
  40. }
  41.  
  42. bool input(Record& vehicle) {
  43. string plateNumber("12345");
  44. ifstream in(plateNumber, ios::binary);
  45. if (!in)
  46. return false;
  47.  
  48. in.read(reinterpret_cast<char*>(&vehicle.a), sizeof vehicle.a);
  49. in.read(reinterpret_cast<char*>(&vehicle.b), sizeof vehicle.b);
  50.  
  51. // Read the size of the vector.
  52. size_t vsize = 0;
  53. in.read(reinterpret_cast<char*>(&vsize), sizeof vsize);
  54.  
  55. // Read the vector data.
  56. for (size_t i = 0; i < vsize; i++) {
  57. // Read in the size of the string.
  58. size_t size = 0;
  59. in.read(reinterpret_cast<char*>(&size), sizeof size);
  60.  
  61. // Read in the string.
  62. char str[1000];
  63. in.read(str, size);
  64. vehicle.v.push_back(str);
  65. }
  66.  
  67. return true;
  68. }
  69.  
  70. int main() {
  71. Record v(1, 2);
  72. v.add("one");
  73. v.add("two");
  74. v.add("three");
  75.  
  76. if (!output(v)) {
  77. cerr << "Error writing file.\n";
  78. return 1;
  79. }
  80.  
  81. Record w;
  82. if (!input(w)) {
  83. cerr << "Error reading file.\n";
  84. return 1;
  85. }
  86.  
  87. cout << w.a << ", " << w.b << '\n';
  88. for (const auto& s : w.v)
  89. cout << s << '\n';
  90.  
  91. return 0;
  92. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement