Fir*_*cer 7 c++ windows settings
什么是存储应用程序设置的相当标准的方式,主要用于Windows,但也很容易移动到其他平台.
基本上我想拥有4组设置:
每个级别都会覆盖以前的级别,允许"全局设置"使应用程序默认值更大,用户设置存储用户选择的选项.前两个基本上是没有用户设置的默认值(例如,对于新用户).
我认为实施一系列的功能,然后我可以实现对不同系统(可能是通过INI文件),但是这是最好的办法吗?
(C++)
namespace config
{
void Init(const std::string &AppName);
//updates config for keys/sections that don't exist (ie don't overwrite changes by advanced users by rewriting the entire file)
void Defaults (std::map<std::string,std::map<std::string,std::string> > &Map);
void SystemDefaults (std::map<std::string,std::map<std::string,std::string> > &Map);
void Set (const std::string &Section, const std::string &Key, const std::string &Value);
void SetSystem (const std::string &Section, const std::string &Key, const std::string &Value);
void SetUser (const std::string &Section, const std::string &Key, const std::string &Value);
void SetUserSystem (const std::string &Section, const std::string &Key, const std::string &Value);
std::string GetValue (const std::string &Section, const std::string &Key);
}
Run Code Online (Sandbox Code Playgroud)
我知道windows有一组这样的设置目录,但这些是我需要的正确目录吗?
编辑:我宁愿去文件(ini或xml),而不是说使用windows registery.但是,在每个操作系统下放置这些配置文件的最佳位置是什么?
在Vista下,我找到了这些,这似乎适合不过的了什么旧的Windows版本(我需要支持WIN2000,XP等)我的组,并没有MAC/Linux的,有自己的simelar文件夹?
有(至少)三个合理的选择:
注册表:由于可移植性和相对不透明性,这是我最不喜欢的。
环境变量:我建议使用一个(仅一个)指向保存材料的位置 - “安装目录”或类似的变量。
文件:用户主目录(或其子目录)和项目/产品目录都适合存储内容。
您可能想要使用简单的关键字=值范例和基本规则,以便您的变量 - 设置 - 可以很容易地被多种类型的代码读取。例如,我通常对属性文件使用 Java 范例,并使用匹配行为的 C 代码,以便我的两个代码行都可以轻松读取设置。