C++ 获取H5::DataSet文件中的hid_t和路径以使用H5OCopy

C++ 获取H5::DataSet文件中的hid_t和路径以使用H5OCopy,c++,hdf5,C++,Hdf5,我使用HDF5上的C++包装库,想下拉到C API 将数据集从源HDF5文件高效复制到目标文件。(在另一条道路上,但这不是重点) 我可以访问目标的低级ID和路径,但对于 源码i只有H5:DataSet C++包装器实例,而H5OOPopy()(需要在下面的原型中)需要源数据HDF5文件的HIDHT,该文件包含数据源和其在源文件中的路径。 有没有办法从H5::dataset实例获取缺少的文件隐藏路径和数据集路径 直觉上我认为肯定有,但我还没有找到他们--DD PS:从已知的角度来看,很难通过API

我使用HDF5上的C++包装库,想下拉到C API 将数据集从源HDF5文件高效复制到目标文件。(在另一条道路上,但这不是重点)

我可以访问目标的低级ID和路径,但对于 源码i只有H5:DataSet C++包装器实例,而H5OOPopy()(需要在下面的原型中)需要源数据HDF5文件的HIDHT,该文件包含数据源<强>和<强>其在源文件中的路径。 有没有办法从H5::dataset实例获取缺少的文件隐藏路径和数据集路径

直觉上我认为肯定有,但我还没有找到他们--DD

PS:从已知的角度来看,很难通过API层显示这些id/路径,因为要执行H5OCopy的代码在时间和空间上都非常遥远


如果这是您的一个选项,请看一看,因为它可能会大大简化将数据集从一个HDF5文件复制到另一个HDF5文件的方式。例如,将一个名为“代码> dSET/C++”的数据集从文件<代码> > H5 < /代码>复制到文件<代码> 2 .H5<代码>中,只需使用HDFQL:

在C++中执行以下操作
HDFql::execute("COPY DATASET one.h5 dset TO two.h5 dset");
此外,您可以将
dset
复制到另一个组中(从文件
two.h5
),并为数据集指定另一个名称,例如:

HDFql::execute("COPY DATASET one.h5 dset TO two.h5 /group/new_dset");

有关更多信息和示例,请查看HDFql。

如果这是您的一个选项,请查看,因为它可以大大简化将数据集从一个HDF5文件复制到另一个HDF5文件的方式。例如,将一个名为“代码> dSET/C++”的数据集从文件<代码> > H5 < /代码>复制到文件<代码> 2 .H5<代码>中,只需使用HDFQL:

在C++中执行以下操作
HDFql::execute("COPY DATASET one.h5 dset TO two.h5 dset");
此外,您可以将
dset
复制到另一个组中(从文件
two.h5
),并为数据集指定另一个名称,例如:

HDFql::execute("COPY DATASET one.h5 dset TO two.h5 /group/new_dset");

有关更多信息和示例,请查看HDFql。

首先,源文件不是文件,因为它使用自定义VFL;其次,正如前面提到的问题,我没有源数据集的名称/路径,因此我不太确定这会有什么帮助。考虑到我已经提出的问题,如果/当你有正确的论点,并且你的建议似乎没有帮助时,使用H5Ocopy就足够简单了。在HDF5之上引入DSL只会让事情变慢,除非我遗漏了什么。不过谢谢你的链接。首先,源文件不是一个文件,因为它使用的是自定义VFL;其次,正如前面提到的问题,我没有源数据集的名称/路径,所以我不太确定这会有什么帮助。考虑到我已经提出的问题,如果/当你有正确的论点,并且你的建议似乎没有帮助时,使用H5Ocopy就足够简单了。在HDF5之上引入DSL只会让事情变慢,除非我遗漏了什么。谢谢你的链接。