是否有一些常用的方法来编写和读取配置文件?

时间:2010-04-16 18:01:56

标签: c++ configuration configuration-files

我需要我的程序来创建和编辑配置文件,配置文件包含有关对象集的信息,而不是在每次执行时读取它。我可以使用配置样式的某种指南吗?

我在Windows上使用C ++。

8 个答案:

答案 0 :(得分:10)

我建议您查看boost::property_tree

  

属性树库提供了一种数据结构,用于存储任意深度嵌套的值树,并通过某个键在每个级别编制索引。树的每个节点都存储自己的值,以及其子节点及其键的有序列表。该树允许通过路径轻松访问其任何节点,该路径是多个密钥的串联。

此外,它包含XML,INI和JSON的解析器和生成器,因此您可以以您选择的格式保存/加载。

答案 1 :(得分:5)

YAML是一种非常流行的创建配置文件的解决方案。例如,Ruby on Rails和Google AppEngine突出显示它。 YAML库可用于许多(如果不是大多数语言)。

答案 2 :(得分:5)

这在很大程度上取决于配置文件的语言,平台和范围。例如,Java世界中的properties files用于配置,其他已经在这里提到过,例如YAML。

XML通常不赞成配置,因为它非常详细。您仍然可以在许多应用程序,Web框架等中找到它。

我认为最佳做法是为手头的工作选择正确的配置格式。你可以自己评估和试用它们,同时考虑这些指针:

  1. 标准是什么? (例如,Windows中的ini文件,Java中的属性文件)
  2. 我的语言是否有原生支持,或者我是否必须自行实施?
  3. 我的配置格式可以轻松描述我想要存储的配置吗?
  4. 我相信你能想到其他的考虑因素。如果您更新问题以澄清范围,您将获得更多有用的答案。

答案 3 :(得分:3)

如果您正在使用Qt(根据您的其他问题),

查看QSettings类。我一直在使用它们设置很多持久性信息,例如上次访问的目录,以及上次使用的选项。

答案 4 :(得分:3)

boost :: program_options有一些读取ini文件的能力。

有什么好处是允许统一读取ini文件和命令行选项。随着Windows程序的发展,这可能不会被看作是一个有趣的未来,但对于我的unix应用程序来说,这是一个杀手级功能。

但是,boost :: po不允许编辑或编写ini文件,因此使用boost :: property_tree可能会更好。

答案 5 :(得分:2)

最常见的格式是INI File格式。大多数mdoern语言应该有一些内置的东西来处理这些,否则我相信你能找到第三方库。

如果失败了,你可以使用XML,如果你的语言支持它,那么从这些XML文件序列化和反序列化。如果您不想/不能使用XML,大多数语言都会使用它们使用的默认格式,例如对象中数据的纯二进制转储。

答案 6 :(得分:1)

有一个免费的跨平台的配置文件管理库,名为libconfig。它支持非常好的基于Yaml的语法,并且也支持用户定义的语法。它还有许多其他计算语言绑定。看到它的主页:http://www.hyperrealm.com/libconfig/

答案 7 :(得分:0)

在Java世界中,属性文件非常易于使用: http://java.sun.com/j2se/1.5.0/docs/api/java/util/Properties.html Properties类表示一组持久的属性。可以将属性保存到流中或从流中加载。属性列表中的每个键及其对应的值都是一个字符串。

正如其他人所说,您需要描述您的环境以获得最佳建议。