【问题标题】:C++ lightweight configuration libraryC++轻量级配置库
【发布时间】:2012-03-04 03:07:12
【问题描述】:

我正在寻找具有非限制性许可的跨平台 C++ 轻量级配置库。我需要比标准属性文件更复杂的部分,但我不想使用 XML(写太多:-))。

我想这样写配置:

render = 
{
    window = 
    {
        width = 800,
        height = 600
    }
}

【问题讨论】:

  • 我找到了libconfig。我看起来不错,但它使用异常来报告错误...
  • 我也觉得 libconfig 很不错。我在使用 C++ API 时遇到了一些问题,并且似乎没有针对 Java 的实现(这意味着只有 C/C++ 应用程序可以读取配置文件),但现在它仍然是我的首选配置库.
  • libconfig 似乎已经死了。手册页和下载链接都指向一个未配置的 WordPress 站点。
  • 虽然谷歌出现了github.com/hyperrealm/libconfig,它仍然有效

标签: c++ configuration-files


【解决方案1】:

有提升的property_treelicense 允许商业用途。

你的例子:

ptree pt;
pt.put("render.window.width", 800);
pt.put("render.window.height", 600);

这可以例如导出为 JSON

write_json("my_config.json", pt);

然后看起来像

{
  "render":
  {
    "window":
    {
      "width": 800;
      "height": 600;
    }
  }
}

您可以以同样的方式导出到 XML、INI 和 INFO。

【讨论】:

  • 根据我的经验.. Boost 远非轻量级库,但我会看看它,因为它看起来很有前途
  • @hubrobin:你不需要整个 Boost 库来完成这项工作,IIRC。 Boost 有一个名为 bcp 的工具,专门用于提取单个库。
【解决方案2】:

你也可以试试JsonCpp,把你的配置文件写到Json,语法和你喜欢的很相似:

// Configuration options
{
    // Default encoding for text
    "encoding" : "UTF-8",

    // Plug-ins loaded at start-up
    "plug-ins" : [
        "python",
        "c++",
        "ruby"
        ],

    // Tab indent size
    "indent" : { "length" : 3, "use_space": true }
}

MIT License下所以很放任。

【讨论】:

  • 自从写了这个答案,JSON for Modern C++ 已经成为一个非常流行的 C++ JSON 库,也值得一看。
猜你喜欢
  • 1970-01-01
  • 2012-08-02
  • 2021-07-14
  • 2016-01-20
  • 2015-07-21
  • 1970-01-01
  • 1970-01-01
  • 2016-12-15
  • 2013-12-24
相关资源
最近更新 更多