データを追加するための既存のHDF5ファイルを開きます。後でアクセスするために/A
というグループが存在することを保証したいと思います。私は/A
を条件付きで作成する簡単な方法を探しています(存在しない場合は新規グループを作成して返します)、既存のグループを返します。 1つの方法は、/A
の存在をテストすることです。どのように効率的に行うことができますか?hdf5/C++でのテストグループの存在
APIドキュメントによると、私はこのような何かを行うことができます。
H5::H5File h5file(filename,H5F_ACC_RDWR);
H5::H5Group grp;
try{
grp=h5file.openGroup("A");
} catch(H5::Exception& e){
/* group does not exists, create it */
grp=h5file.createGroup("A");
}
が、明白な醜さは、例外が全く例外ではない情報を通信するために使用されているという事実から来ています。
H5::CommonFG::getObjinfoがあります。これは、Cルーチンのfalse(存在しない)戻り値が例外をスローするようにH5Gget_objinfoをラップするように見えます。もう一度同じ問題です。
この場合、C APIに頼るのはきれいですか、または私が見落としているC++ APIに存在をテストするために直接設計された関数がありますか?
[ 'H5Lexists'](https://www.hdfgroup.org/HDF5/doc/RM/RM_H5L.html#Link-Exists)のC++と同等がまったく存在していないように見えます。 'try ... catch ...'は私にとってはC++よりもはるかに難色だと思われますが、C APIを使うことはあなたの2つの選択肢だと思います。 – Yossarian