목표는 C 클래스를 직렬화 및 역직렬화하는 것입니다. 사용자 정의 데이터 유형의 멤버를 포함하는 Mango.
권장되는 구현에는 다음이 포함됩니다. 기능:
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);
모든 관련 유형(ValType, FuntionMango, MangoType 및 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");
}
라이브 예시:
https://coliru.stacked-crooked.com/a/288829ec964a3ca9
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3