标题非常不言自明:有人知道 C 或 C++ 的(好的)属性文件阅读器库吗?
编辑:具体来说,我想要一个处理 Java 中使用的 .properties 文件格式的库:http://en.wikipedia.org/wiki/.properties
最佳答案
STLSoft的1.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_type
是 stlsoft::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/