2012-12-03 7 views
5

प्रलेखन वास्तव में नहीं कहता है।Boost.PropertyTree की पार्स/पढ़ने की विफलता का पता लगाने के लिए कैसे?

मुझे लगता है कि मैं इसे एक आईफस्ट्रीम सौंप सकता हूं, इसलिए मैं यह सुनिश्चित करने के लिए जांच सकता हूं कि यह खुला है, इसलिए मामला अधिकतर निपटाया जाता है।

लेकिन जब बूस्ट :: property_tree :: ini_parser :: read_ini (ifstream_object, property_tree_object);

मैं कैसे पता लगा सकता हूं कि फ़ाइल खराब प्रारूप में थी या नहीं? क्या मुझे जैसे डायग्नोस्टिक जानकारी प्राप्त करने का कोई तरीका है, जहां पार्स असफल रहा?

उत्तर

9

बस अपवादों को पकड़ें। बेस प्रॉपर्टीट्री अपवाद वर्ग 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