Повысить дерево свойств Плохой путь ни за что

У меня проблемы с этой библиотекой... Мой код работает нормально, синтаксический анализатор / создатель тоже работает, но появляется ошибка, я не знаю почему:

#include <boost/property_tree/ptree.hpp>
#include <boost/property_tree/xml_parser.hpp>
#include <boost/thread.hpp>
#include <string>
#include <exception>
#include <set>
#include <iostream>
#include "journal.h"

unsigned short port                 = 2013;
unsigned short maxConnec            = 250;

unsigned short fPort()                 {return port;}
unsigned short fMaxConnec()            {return maxConnec;}

bool load(const std::string &file)
{
    using boost::property_tree::ptree;
    ptree objectXML;
    std::cout << "bbb";
    read_xml(file, objectXML);
    std::cout << "aaa";
    if (file.length() == 0) // By the way, no way to do that better ? "if file doesn't exist..."
    {
        return 0;
    }
    else
    {
        port                    = objectXML.get<unsigned short>("configuration.server.port");
        maxConnec            = objectXML.get<unsigned short>("configuration.server.maxConnections");
        return 1;
    }
}

bool save(const std::string &file)
{
    try
    {
        using boost::property_tree::ptree;
        ptree objectXML;
        objetXML.put("configuration.server.port", port);
        objetXML.put("configuration.server.maxConnections", maxConnec);
        write_xml(file, objectXML, std::locale(), boost::property_tree::xml_writer_make_settings<ptree::key_type>(' ', 4));
        return 1;
    }
    catch (std::exception e)
    {
        return 0;
    }
}

void generate()
{

    std::string file = "configuration.xml";
    try{
        if (!load(fichier))
        {
            save(file);
        }
    }
    catch (std::exception &e)
    {
        load(file);
    }
}

Получить неверный путь, я совершенно не знаю почему, потому что, когда я пытаюсь прочитать данные, я могу, и он получает данные в configuration.xml даже если я изменю это...

1 ответ

Решение

ptree_bad_path исключение возникает из метательной версии get и сигнализирует, что "configuration.server.port" или же "configuration.server.maxConnections" Путь к элементу XML не существует.

Ошибка не связана с configuration.xml Путь файла.

Поэтому вам следует проверить имя элемента или, для дополнительных элементов, использовать версию по умолчанию / дополнительное значение get,

Другие вопросы по тегам