Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- #include <string>
- #include <vector>
- using namespace std;
- struct Record {
- int a, b;
- vector<string> v;
- Record() : a(), b() {}
- Record(int a, int b) : a(a), b(b) {}
- void add(string s) { v.push_back(s); }
- };
- bool output(Record& vehicle) {
- string plateNumber("12345");
- ofstream out(plateNumber, ios::binary);
- if (!out)
- return false;
- out.write(reinterpret_cast<char*>(&vehicle.a), sizeof(int));
- out.write(reinterpret_cast<char*>(&vehicle.b), sizeof(int));
- // Write the size of the vector.
- size_t size = vehicle.v.size();
- out.write(reinterpret_cast<char*>(&size), sizeof size);
- // Write the vector data.
- for (size_t i = 0; i < vehicle.v.size(); i++) {
- // Write the size of the string.
- size = vehicle.v[i].size();
- out.write(reinterpret_cast<char*>(&size), sizeof size);
- // Write the string data.
- const char* p = vehicle.v[i].data();
- out.write(p, vehicle.v[i].size());
- }
- return true;
- }
- bool input(Record& vehicle) {
- string plateNumber("12345");
- ifstream in(plateNumber, ios::binary);
- if (!in)
- return false;
- in.read(reinterpret_cast<char*>(&vehicle.a), sizeof vehicle.a);
- in.read(reinterpret_cast<char*>(&vehicle.b), sizeof vehicle.b);
- // Read the size of the vector.
- size_t vsize = 0;
- in.read(reinterpret_cast<char*>(&vsize), sizeof vsize);
- // Read the vector data.
- for (size_t i = 0; i < vsize; i++) {
- // Read in the size of the string.
- size_t size = 0;
- in.read(reinterpret_cast<char*>(&size), sizeof size);
- // Read in the string.
- char str[1000];
- in.read(str, size);
- vehicle.v.push_back(str);
- }
- return true;
- }
- int main() {
- Record v(1, 2);
- v.add("one");
- v.add("two");
- v.add("three");
- if (!output(v)) {
- cerr << "Error writing file.\n";
- return 1;
- }
- Record w;
- if (!input(w)) {
- cerr << "Error reading file.\n";
- return 1;
- }
- cout << w.a << ", " << w.b << '\n';
- for (const auto& s : w.v)
- cout << s << '\n';
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement