2

ブースト ライブラリを使用して、C++ のファイルから json データを読み取りたいです。プロパティ ツリーの使用。私はプログラミングが初めてで、C ++が初めてで、ブーストライブラリを初めて使用します。私は何年も前にCでいくつかの歴史を持っていました。また、SFML ライブラリを使用して C++ で数週間の経験があります。

以下は私のテンプレートコードで、ファイルをロードし、データを読み取り、失敗するとエラーが発生します。エラー処理を少し異なる方法で変更したいと考えています。1.上記のファイルが存在しないために開くことができない場合は、それに応じて名前を付けた空のファイルを作成します。2.しかし、他のエラーが発生してもファイルが存在する場合、誤ってファイルを削除して新しいファイルを作成(データの消去)したくありません。

みたいな感じになると思います

catch (const std::exception& e)
{
 if (e.type == std::exception::filenotfound()) //whatever function i need
   {
    boost::property_tree::write_json("./data.json", pt);
   }
 else
   {
    std::cout << e.what() << std::endl;
   }
}

したがって、ファイルが本当に存在しない場合にのみファイルを作成したいのですが、何らかの理由で破損している場合、探しているデータが欠落している場合、または想像を絶するその他のエラーが発生した場合は、ファイルを削除したくありません。これが私のテンプレートです(私が望むものの実装なし)

#include <iostream>
#include <boost/property_tree/ptree.hpp>
#include <boost/property_tree/json_parser.hpp>
int main()
{
    boost::property_tree::ptree pt;
    try
    {
        boost::property_tree::read_json("./data.json", pt);
    }
    catch (const std::exception& e)
    {
     std::cout << e.what() << std::endl;
    }
    std::cout << pt.get<std::string>("test_name","default") << std::endl;

    return 0;

}

このコードをどの程度正確に記述すべきか。2 時間インターネットを検索しましたが、欲しいものが見つかりませんでした。(または、少なくとも私は気づきませんでした)そして、私は元のライブラリのドキュメントを解読するのに十分な経験がありません. 暗号化されているように感じるので、代わりにサンプルを探します。

4

1 に答える 1