2012-12-03 5 views
5

ドキュメントは実際には言いません。Boost.PropertyTreeの解析/読み取りエラーを検出するにはどうすればよいですか?

私はそれを手渡すことができますので、私はそれが開いていることを確認することができますので、そのケースはほとんど対処されています。

しかし、boost :: property_tree :: ini_parser :: read_ini(ifstream_object、property_tree_object)を実行するとき。

ファイルの形式が不良であるかどうかを検出するにはどうすればよいですか? のような診断情報を取得する方法はありますか?解析に失敗しましたか?

答えて

9

例外をキャッチするだけです。 Base PropertyTree例外クラスはstd::runtime_errorに由来するboost::property_tree::ptree_errorであり、2つの子孫:ptree_bad_dataptree_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 
関連する問題