Используя boost :: property_tree :: ptree, как получить значение указанного ключа c - PullRequest
1 голос
/ 12 января 2020

Как мне разобрать все разделы, которые присутствуют в файле, и получить значение для каждого ключа. То есть мне нужно разобрать section1, получить значение для key1, key2, key3. Перейдите к разделу 2, чтобы получить значение для ключей key1, key2 и key3. Мой файл .ini выглядит примерно так:

[SECTION1]
key1=value1
key2=value2
key3=value3
[SECTION2]
key1=value1
key3=value3
key2=value2

и так далее

1 Ответ

1 голос
/ 12 января 2020

Вот пример:

#include <iostream>
#include <string>
#include "boost/property_tree/ini_parser.hpp"


namespace pt = boost::property_tree;


int main() {
  pt::wptree root;

  pt::read_ini("test.ini", root);
  std::wcout << root.get_optional<std::wstring>(L"SECTION1.key2").value() << std::endl;

  return 0;
}

Файл "test.ini" содержит:

[SECTION1]
key1=value1
key2=value2
key3=value3
[SECTION2]
key1=value1
key3=value3
key2=value2

Для получения всех значений:

#include <iostream>
#include <string>
#include "boost/property_tree/ini_parser.hpp"


namespace pt = boost::property_tree;


int main() {
  pt::wptree root;

  pt::read_ini("test.ini", root);

  for (auto& child : root) {
    std::wcout << child.first << std::endl;

    for (auto& sub_child : child.second)
      std::wcout << sub_child.second.get_value<std::wstring>() << std::endl;
  }

  return 0;
}
...