c++ - 如何通过 C 或 C++ API 获取 HDF5 数据集的名称?

标签 c++ hdf5

我正在尝试使用 C++ API 读取 HDF5 数据集的名称。对于 H5::Attribute 对象,有一个 getName() 方法。但是,我没有看到 H5:DataSet 对象的类似 getName() 方法。

理想情况下我想这样做:

 void Dump(H5::DataSet& ds)
 {
    cout << "Dataset " << ds.getName() << endl;
    // continue to print dataset values
 }

我知道 h5dump 可以做到,但简单看一下代码,它只能通过使用 H5Giterate 遍历树来知道它,只有父级知道名称 children ,但 children 不知道自己的名字。

最佳答案

这是基于 Simon 帖子的部分答案。注意名称是一个完整的层级名称,

std::string getName(const H5::DataSet& ds)
{
    size_t len = H5Iget_name(ds.getId(),NULL,0);
    char buffer[len];
    H5Iget_name(ds.getId(),buffer,len+1);
    std::string n = buffer;
    return n;
}

例子名

"/toplevel/videodata"

关于c++ - 如何通过 C 或 C++ API 获取 HDF5 数据集的名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22798731/

相关文章:

c++ - 如果一个为高,则将字节中的所有位设置为高

带括号的 C++ 非函数 typedef

c++ - VTK - 从 6.1 迁移到 8.2 [2]

HDF5 与 ROOT 框架的集成

c++ - 构造函数模板特化给出了对析构函数的 undefined reference

c++ - C++ 中变量声明的差异

HDF5: "file buffer"和 "file cache"之间有什么区别?

python - "Large data"使用 Pandas 的工作流程

python - 从之前保存的 hdf5 文件中加载部分模型权重

python - 如何将多个 hdf5 文件聚合成一个图像