c++ - C(或 C++)的属性文件库

标签 c++ c properties

标题非常不言自明:有人知道 C 或 C++ 的(好的)属性文件阅读器库吗?

编辑:具体来说,我想要一个处理 Java 中使用的 .properties 文件格式的库:http://en.wikipedia.org/wiki/.properties

最佳答案

STLSoft1.10 alpha包含一个 platformSTL::properties_file 类。它可用于从文件中读取:

using platformstl::properties_file;

properties_file  properties("stuff.properties");

properties_file::value_type  value = properties["name"];

或凭内存:

properties_file  properties(
    "name0=value1\n name1 value1 \n name\\ 2 : value\\ 2  ",
    properties_file::contents);

properties_file::value_type  value0 = properties["name0"];

properties_file::value_type  value1 = properties["name1"];

properties_file::value_type  value2 = properties["name 2"];

看起来最新的 1.10 版本有一堆全面的单元测试,并且他们已经升级了类来处理 Java documentation 中给出的所有规则和示例.

唯一明显的问题是 value_typestlsoft::basic_string_view 的一个实例(在 this Dr Dobb's article 中描述),它有点类似于 std::string,但实际上并不拥有它的内存。大概他们这样做是为了避免不必要的分配,大概是出于性能原因,这是 STLSoft 设计所珍视的。但这意味着你不能只写

std::string  value0 = properties["name0"];

但是,您可以这样做:

std::string  value0 = properties["name0"].c_str();

还有这个:

std::cout << properties["name0"];

我不确定我是否同意这个设计决定,因为从文件或内存中读取属性需要绝对最后一个周期的可能性有多大。我认为他们应该将其更改为默认使用 std::string,然后在明确需要时使用“字符串 View ”。

除此之外,properties_file 类看起来可以解决问题。

关于c++ - C(或 C++)的属性文件库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/874052/

相关文章:

无法使用互斥体执行第一个线程

ant - 使用Ant合并两个不同的属性文件

ms-access - Access 报告 - 隐藏字段、标签和其他基于数据的元素

c++ - 在 Windbg 中,如何在调试时列出枚举的值?

c++ - 如何从命令行在 Visual Studio 2019 for C++ 中生成 .pdb 文件

c - 数据库事务和线程

javascript - 我无法将对象属性作为函数获取

c++ - 如何使用类中的线程操作 vector ?

c++ - bool 类型的引用调用

c++ - 如何将枚举类型变量转换为字符串?