cmake c++ hdf5,hdf读取
适用于存在组的情况 Eigen::VectorXd &vd为Eigen中的数据类型,需要另行配置

#include <Eigen/Dense>
#include "netcdfcpp.h"
#include "hdf5.h"
#include "H5Cpp.h"
int read(Eigen::VectorXd &vd, const char *file_path, const char *g_name, const char *d_name)
{
//获取文件
H5::H5File file(file_path, H5F_ACC_RDONLY);
//获取组
H5::Group group = file.openGroup(g_name);
//获取存储空间
H5::DataSet dataset = group.openDataSet(d_name);
H5::DataSpace fs = dataset.getSpace();
//获取维度数
int dimNums = fs.getSimpleExtentNdims();
hsize_t * dims = new hsize_t[dimNums];
//H5::DataSpace myspace(dimNums, dims);
//读取每个维度的大小
fs.getSimpleExtentDims(dims);
//创建接收
//遍历dims的数量
int vds = 1;
for (size_t i = 0; i < dimNums; i++)
{
vds = vds * dims[i];
}
vd.resize(vds);
dataset.read(vd.data(), H5::PredType::NATIVE_DOUBLE);
// cout << vd.size() << endl;
// for (int i = 0; i < vd.size(); i++)
// {
// cout << vd[i] << endl;
// }
delete[]dims;
fs.close();
group.close();
file.close();
return 0;
}

浙公网安备 33010602011771号