C++ 读取配置属性的简单方法

C++ 读取配置属性的简单方法,c++,C++,我试图向现有代码/项目添加一些可配置属性。我发现有这么多的步骤来做这件事真的很烦人: 在配置文件中添加条目 在h文件中声明一个密钥字符串 在cpp文件中定义该键字符串 在h文件中声明一个getXXX方法/函数 在cpp文件中定义getXXX方法/函数 在我们的例子中,头文件和cpp文件仅用于从文本文件读取的属性,这些属性仅在该模块中需要。因此,我们可以用更少的文件或更少的步骤来简化它们。有什么想法/建议吗 编辑: 映射用于保存文本文件中的内容 示例get方法如下所示: unsigned int

我试图向现有代码/项目添加一些可配置属性。我发现有这么多的步骤来做这件事真的很烦人:

  • 在配置文件中添加条目
  • 在h文件中声明一个密钥字符串
  • 在cpp文件中定义该键字符串
  • 在h文件中声明一个getXXX方法/函数
  • 在cpp文件中定义getXXX方法/函数 在我们的例子中,头文件和cpp文件仅用于从文本文件读取的属性,这些属性仅在该模块中需要。因此,我们可以用更少的文件或更少的步骤来简化它们。有什么想法/建议吗

    编辑:

    映射用于保存文本文件中的内容

    示例get方法如下所示:

    unsigned int Module1Config::getSleepTime()
    {
        return getPropertyMap().getUnsignedIntProperty(SLEEP_TIME_KEY);
    }
    

    一个私有的
    std::map
    ,其密钥就是配置文件中声明的那些密钥。然后,您可以使用一个getter函数,根据需要键入值,如果该值不存在,则使用默认值:

    template<class T>
    T get(const std::string &key) const
    {
      if the key is in the map,
        return its value converted to type T
      else
        return T();
    }
    

    这种方法的优点是在添加新属性时不需要修改类。缺点是在h文件中键名不是作为常量标识符创建的,因此您必须始终使用字符串,这可能容易出错。无论如何,我认为它的多功能性是值得的(这是我在程序中使用的方法)。

    您能提供一个代码示例吗?我不清楚为什么需要
    getX
    方法。有什么原因不能将它们全部读入
    std::map
    bool exists(const std::string &key) const
    {
      return true iif key is in the map
    }