【问题标题】:How to parse more than 2 level ini file with Boost如何使用 Boost 解析超过 2 级的 ini 文件
【发布时间】:2012-09-23 16:35:49
【问题描述】:

我想要一个不止 2 个级别的 ini 文件......像这样

[Section1]
Value1 = 10
Value2 = a_text_string

[Section2]
[SubSection1]
Value1=1
Value2=2

[Section2]
[SubSection2]
Value1=a
Value2=b

Qn 1.如何创建这样的ini文件?

之后我想加载这些值并使用 Boost 在我的应用程序中打印它们

*Qn2.这行得通吗?如果不行,我该怎么做?*

boost::property_tree::ptree pt;
boost::property_tree::ini_parser::read_ini("config.ini", pt);
std::cout << pt.get<std::string>("Section1.Value1") << std::endl;
std::cout << pt.get<std::string>("Section2.Subsection1.Value2") << std::endl;

【问题讨论】:

  • 小节与新节的区别是什么?你能改变格式规范吗?如果是这样,您可以更改它,以便节名称可以以嵌套级别说明符开头:[1:Subsection1] 虽然如果您可以更改规范,为什么不使用 XML 之类的东西,对吧?
  • @enobayram 为什么你会选择像 XML 这样冗长的东西而不是 JSON? ;)
  • @cdhowie 我不会选择 XML 而不是 JSON,我会选择它而不是我丑陋的建议 :) 这只是一个例子。

标签: c++ parsing boot ini


【解决方案1】:

INI 文件不支持这样的结构。如果你想在一个 INI 文件中有不同的结构级别,你必须在每个部分中指定完整路径:

[Section1]
Value1 = 10
Value2 = a_text_string

[Section2.SubSection1]
Value1=1
Value2=2

[Section2.SubSection2]
Value1=a
Value2=b

实际的“Section2”。前缀在 INI 语法中没有任何具体含义,它只是一种让您在不支持嵌套的语言中创建这种结构的方法。

【讨论】:

    猜你喜欢
    • 2011-09-04
    • 2011-03-15
    • 2011-11-15
    • 1970-01-01
    • 2014-12-21
    • 2014-09-03
    • 2015-10-13
    • 2012-11-18
    • 1970-01-01
    相关资源
    最近更新 更多