写入和读取提升 属性 树 From/To 文件?

Writing and Reading boost Property Tree From/To File?

我想将 boost::property_tree::ptree 二进制文件写入文件,然后再次将其读出到 ptree

因为我对 ptree 和二进制文件不太满意 writing/reading 它们..我认为你们可以引导我走向正确的方向。

写字符串,int/float/double 不是什么大问题,但是如何将整个 ptree(具有未知的键和值,所以它是通用的)存储到一个文件并使用 [=cpp 将其读回 if-/ofstream?

Filer Extention 将为“*.tgasset”并且文件将包含比 ptree 多的数据。

为了让我更轻松..这些是我对 write/read 数据的虚拟函数:

void TGS_File::PTreeToFile(std::ofstream &_file, boost::property_tree::ptree _data) {

}

boost::property_tree::ptree TGS_File::PTreeFromFile(std::ifstream &_file) {
    boost::property_tree::ptree _data;

    return _data;
}

(以同样的方式处理字符串、整数、浮点数和双精度数)

您必须 select 一种格式:INI、Json、XML 或 INFO。每个都有自己的一组限制:https://www.boost.org/doc/libs/1_77_0/doc/html/property_tree/parsers.html

例如如果你选择 JSON:

#include <boost/property_tree/json_parser.hpp>

void TGS_File::PTreeToFile(std::ofstream &_file, boost::property_tree::ptree _data) {
     write_json(_file, _data);
}

boost::property_tree::ptree TGS_File::PTreeFromFile(std::ifstream &_file) {
    boost::property_tree::ptree _data;
    read_json(_file, _data);
    return _data;
}

其他格式的过程 99% 相同。粗略地说(根据记忆)我想 INFO 格式在往返过程中丢失的信息量最少。