Serialization and deserialization are common concepts in programming.
They are used in data storage, network transmission, and inter-process communication.
Serialization: The process of converting a data structure or object into a format that can be stored or transmitted (such as a string or byte stream).
Deserialization: The process of converting serialized data back into the original data structure or object.
#include <iostream>
#include <string>
#include <sstream>
#include <vector>
using namespace std;
// Define a simple data structure
struct Person {
string name;
int age;
vector<string> hobbies;
};
// Serialization function: Convert Person object to string
string serializePerson(const Person& p) {
stringstream ss;
// Use "|" as the field separator; other separators can be used based on coding standards or preferences
ss << p.name << "|" << p.age;
// Add hobbies list, separated by ","
for (size_t i = 0; i < p.hobbies.size(); ++i) {
if (i == 0) {
ss << "|";
} else {
ss << ",";
}
ss << p.hobbies[i];
}
return ss.str();
}
// Deserialization function: Convert string back to Person object
Person deserializePerson(const string& data) {
stringstream ss(data);
string token;
Person p;
int part = 0;
// Use '|' as the separator to parse the string
while (getline(ss, token, '|')) {
if (part == 0) {
p.name = token;
} else if (part == 1) {
p.age = stoi(token);
} else if (part == 2) {
// Parse hobbies list, using ',' as the separator
stringstream hobbiesStream(token);
string hobby;
while (getline(hobbiesStream, hobby, ',')) {
p.hobbies.push_back(hobby);
}
}
part++;
}
return p;
}
// Print Person information
void printPerson(const Person& p) {
cout << "Name: " << p.name << endl;
cout << "Age: " << p.age << endl;
cout << "Hobbies: ";
for (const auto& hobby : p.hobbies) {
cout << hobby << " ";
}
cout << endl;
}
int main() {
// Create and initialize a Person object
Person original;
original.name = "Alice";
original.age = 25;
original.hobbies = { "reading", "swimming", "coding" };
cout << "Original Person:" << endl;
printPerson(original);
cout << endl;
// Serialization
string serialized = serializePerson(original);
cout << "Serialized string: " << serialized << endl;
cout << endl;
// Deserialization
Person deserialized = deserializePerson(serialized);
cout << "Deserialized Person:" << endl;
printPerson(deserialized);
return 0;
}