c++ - 如何使用 Boost 解析超过 2 级的 ini 文件

标签 c++ parsing boot ini

我想要一个不止 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;

最佳答案

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

[Section1]
Value1 = 10
Value2 = a_text_string

[Section2.SubSection1]
Value1=1
Value2=2

[Section2.SubSection2]
Value1=a
Value2=b

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

关于c++ - 如何使用 Boost 解析超过 2 级的 ini 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12696812/

相关文章:

c++ - 如何使 QTextEdit 小部件从我的程序滚动

c++ - 指向使用 vector 地址的临时指针

json - Scala:将 JSON 直接解析为案例类

使用带有 Wt 的 OpenCV 的 C++ Web 项目

c++ - 计算 char 数组中的字符数,包括空格,直到 null char

Android 应用程序不会在启动时启动

windows - 将 Windows 7 UEFI 条目写入 NVRAM

C# - 如何知道启动后 Windows 何时为 "settled"?

c++ - 仿函数与 std::bind

java - 在 Java 中解析 oData 响应