存储设置的最佳实践 我有一个相当大的C++应用程序(在Windows上,没有其他平台被计划),它目前在Windows注册表中存储所有设置(甚至某种类型的地址)。
有时这很不方便,因为用户很难更改注册表中的条目。我希望对设置进行版本控制,以便设置始终与当前代码匹配。目前我们正在对reg文件进行版本设置,但您永远无法确定是否已在目标计算机上添加了所有reg文件。使用C#可以在app.config中定义默认值,但不要覆盖现有设置。我不知道,如果C++存在这样的机制或库, 我希望有以下“特点”:存储设置的最佳实践 我有一个相当大的C++应用程序(在Windows上,没有其他平台被计划),它目前在Windows注册表中存储所有设置(甚至某种类型的地址)。,c++,visual-c++,settings,C++,Visual C++,Settings,有时这很不方便,因为用户很难更改注册表中的条目。我希望对设置进行版本控制,以便设置始终与当前代码匹配。目前我们正在对reg文件进行版本设置,但您永远无法确定是否已在目标计算机上添加了所有reg文件。使用C#可以在app.config中定义默认值,但不要覆盖现有设置。我不知道,如果C++存在这样的机制或库, 我希望有以下“特点”: 可以对设置进行版本控制 目标机器上的简单更新(可由用户完成) 确保在更新时仅添加新设置,并且不使用默认值覆盖现有设置 简单更改用户的设置 Win XP和Win 7下的
- 可以对设置进行版本控制
- 目标机器上的简单更新(可由用户完成)
- 确保在更新时仅添加新设置,并且不使用默认值覆盖现有设置
- 简单更改用户的设置
- Win XP和Win 7下的相同工作流
- 登记处
- Ini文件
- XML文件
对于地址,我们将把它们放在某种XML通讯簿中,但对于其他设置,我们不确定最佳做法是什么。如评论所述,基于树的键/值结构是一种常见的解决方案,而且很容易找到库 是一个很好的选择,因为它经过了良好的测试,可以轻松地导出为XML或JSON 关于您的要求:
- 可以对设置进行版本控制
- 目标机器上的简单更新(可由用户完成)
- 确保在更新时仅添加新设置,并且不使用默认值覆盖现有设置
- 简单更改用户的设置
- Win XP和Win 7下的相同工作流
- 加载现有配置文件,无论其版本如何
- 如果版本与应用程序的当前版本不匹配:
- 为新配置创建新的空白属性树
- 对于树中的每个节点,都有一组预期的属性名,如果旧文件的树中没有此设置,则有一个函数指针或类似的设置。如果设置更改了格式,请为其指定新名称
- 搜索旧树中的每个设置,如果找到,则复制它,如果没有找到,则使用提供的函数的结果
- 保存新的设置文件
- 返回一个常量默认值
- 查询树中的其他设置并将其转换(如果未找到旧设置,则使用默认值)
- 询问用户
ini
文件,如果您可以使用该SS,您可能会对.1表示Boost/ini文件感兴趣。如果您需要多层包含,我会选择XML/JSON文件。否则,INI可能是最简单的解决方案。使用注册表是一个维护噩梦。谢谢您的输入,但是我的需求呢#3?