C++文档数据保存与解析
发布时间:2026/11/2 1:15:06 锦皓数字建站

用例#ifdef SINGLE_HEADER #include cista.h #else #include fstream #include cista/reflection/member_index.h #include cista/serialization.h #endif int main() { // 成员属性反射 struct test { int a, b, c; }; assert(0 cista::member_index(test::a)); assert(1 cista::member_index(test::b)); assert(2 cista::member_index(test::c)); // 文档数据定义 namespace data cista::raw; struct DocDataV1 { int version_{1}; // 版本号 float x; // 基础类型 float y; data::string name; data::vectorint v; // stl 容器 struct { // 嵌套 data::hash_mapdata::string, data::string m; // stl 容器 } j; data::unique_ptrtest testPtr; // 指针 }; // 版本检测 struct version_detection { int version_{0}; }; DocDataV1 saveData; saveData.x 0.1232312f; saveData.y 100002.232323f; saveData.name hello; saveData.v {1, 2, 3}; saveData.j.m {{key, value}}; saveData.testPtr data::make_uniquetest(0, 1, 2); auto buf cista::serialize(saveData); // 保存到文件 std::ofstream ofs(test.bin, std::ios::binary | std::ios::out); ofs.write((char *)buf.data(), buf.size()); ofs.flush(); ofs.close(); // 从文件加载 std::ifstream ifs(test.bin, std::ios::binary | std::ios::in); //指针定位到文件末尾 ifs.seekg(0, std::ios::end); auto fileLength ifs.tellg(); //指定定位到文件开始 ifs.seekg(0, std::ios::beg); cista::buf ibuf(std::vectoruint8_t(fileLength, 0)); ifs.read((char *)ibuf.addr(0), fileLength); ifs.close(); // 版本检测数据兼容 auto versionData cista::unchecked_deserializeversion_detection(ibuf); assert(versionData-version_ 1); // 文档数据反序列化 auto loadData cista::deserializeDocDataV1(buf); // 正确性测试 assert(saveData.version_ loadData-version_); assert(saveData.x loadData-x); assert(saveData.y loadData-y); assert(saveData.name loadData-name); assert(saveData.v loadData-v); assert(saveData.j.m loadData-j.m); assert(saveData.testPtr-a loadData-testPtr-a); assert(saveData.testPtr-b loadData-testPtr-b); assert(saveData.testPtr-c loadData-testPtr-c); }参考GitHub - felixguendling/cista: Cista is a simple, high-performance, zero-copy C serialization reflection library.C RPC ORM 高速解析-CSDN博客C类反射-CSDN博客创作不易小小的支持一下吧
锦
锦皓数字建站
深耕本土企业品牌数字化升级,专注原创端正雅致商务官网,从视觉设计到稳定运维全程保驾护航。