Das Ziel besteht darin, eine C-Klasse zu serialisieren und zu deserialisieren Mango, das Mitglieder benutzerdefinierter Datentypen enthält.
Die vorgeschlagene Implementierung umfasst Folgendes Funktionen:
std::vector serialize(Mango const& Man);
Mango deserialize(std::span data);
void serialize_to_stream(std::ostream& os, Mango const& Man);
void deserialize(std::istream& is, Mango& Man);
Anpassungen sind für alle relevanten Typen erforderlich (einschließlich ValType, FuntionMango, MangoType und Mango):
// Define `do_generate` and `do_parse` functions
// for custom data types.
void serialize_to_stream(std::ostream& os, Mango const& Man) {
do_generate(std::ostreambuf_iterator(os), Man);
}
void deserialize(std::istream& is, Mango& Man) {
Man = {}; // clear it!
std::istreambuf_iterator f(is), l{};
if (!do_parse(f, l, Man))
throw std::runtime_error("deserialize");
}
Live-Beispiel:
https://coliru.stacked-crooked.com/a/288829ec964a3ca9
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3