Как разобрать более двухуровневый INI-файл с помощью Boost

Я хочу иметь INI-файл с более чем 2 уровнями … как-то так

[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

Решение

INI-файлы не поддерживают такую ​​структуру. Если вы хотите иметь разные структурные уровни в INI-файле, вы должны указать полный путь в каждом разделе:

[Section1]
Value1 = 10
Value2 = a_text_string

[Section2.SubSection1]
Value1=1
Value2=2

[Section2.SubSection2]
Value1=a
Value2=b

Фактический «Раздел2». Префикс не означает ничего конкретного в грамматике INI, это просто способ создать такую ​​структуру на языке, который не поддерживает ее с помощью вложенности.

3

Другие решения

Других решений пока нет …