Как обнаружить сбой разбора / чтения Boost.PropertyTree?
в документации действительно не говорится.
Я понимаю, что могу передать его ifstream, чтобы я мог проверить, открыт ли он, так что это дело в основном рассматривается.
но при выполнении boost:: property_tree:: ini_parser:: read_ini(ifstream_object, property_tree_object);
Как определить, был ли файл в плохом формате? Есть ли способ получить диагностическую информацию, такую как здесь анализ не удался?
1 ответов
просто поймать исключение. Базовый класс исключений PropertyTree -boost::property_tree::ptree_error
, который является производным от std::runtime_error
, и имеет двух потомков:ptree_bad_data
и ptree_bad_path
.
пример:
#include <boost/property_tree/ini_parser.hpp>
#include <boost/property_tree/ptree.hpp>
#include <iostream>
#include <sstream>
int main()
{
using namespace std;
using namespace boost;
using namespace property_tree;
stringstream ss;
ss << "good = value" << endl;
ss << "bad something" << endl;
try
{
ptree root;
read_ini(ss, root);
}
catch(const ptree_error &e)
{
cout << e.what() << endl;
}
}
вывод:
<unspecified file>(2): '=' character not found in line