我一直在考虑使用The Right Way (R)来存储程序的内部配置。

详细信息如下:

  • 该配置仅是运行时,因此每次运行都会生成。
  • 可以(并且应该)通过“项目”文件中的指令进行调整(该文件的读取不在此问题范围内)
  • 它必须是可扩展的,即应该有一种添加带有赋值的新“变量”的方法。

  • 我对此的疑问:
  • 我应该如何开始呢?是一个
    具有访问器和 setter 的类
    带有内部std::map自定义变量的好选择?
  • 是否有任何已知的“好方法”
    这样吗?
  • 之间应该有区别吗
    整数, bool(boolean) 值和字符串
    配置变量?
  • 是否应该有任何区别
    在用户和内置之间
    (已经存在,因为我已经
    想到了)变量?

  • 谢谢!

    PS:如果问题不清楚,请随时询问更多信息。

    更新:哇,每个答案似乎都隐式或显式地使用了boost。我应该提到我想避免增强(我现在想探索标准库的功能)。

    最佳答案

    您可能做得比某种类型的属性映射更糟(StringMap只是一个typedef的std::map)

    class PropertyMap
    {
    private:
        StringMap m_Map;
    
    public:
        PropertyMap() { };
                ~PropertyMap() { };
    
        // properties
        template<class T>
        T get(const String& _key, const T& _default = T()) const
        {
            StringMap_cit cit(m_Map.find(_key));
            return (cit != m_Map.end()) ? boost::lexical_cast<T>(cit->second) : _default;
        };  // eo get
    
        // methods
        void set(const String& _cap, const String& _value)
        {
            m_Map[_cap] = _value;
        };  // eo set
    
        template<class T>
        void set(const String& _key, const T& _val)
        {
            set(_key, boost::lexical_cast<String>(_val));
        };  // eo set
    };
    

    09-10 04:56
    查看更多