C++创建空 HDF5 文件而不是数据集的代码

C++ Code Creating Empty HDF5 File Instead of Dataset

本文关键字:数据集 代码 创建 HDF5 文件 C++      更新时间:2023-10-16

我的类中有以下代码来创建具有零矩阵的HDF5文件。但是,它会创建一个完全没有数据集的空 hdf5 文件。如何将数据集写入文件?

#include <H5Cpp.h>
#include <Eigen/Dense>
H5::H5File file("test_save.hdf5", H5F_ACC_TRUNC);
hsize_t dims[2] {10, 5};

std::cout << dims[0] << " " << dims[1] << std::endl;
std::cout << data_set_name << std::endl;
H5::DataSpace dataspace(2, dims);
auto dataset = file.createDataSet("test_dataset", H5::PredType::NATIVE_DOUBLE, dataspace);
Eigen::MatrixXd temp(10, 5);
temp.setZero();
dataset.write(temp.data(), H5::PredType::NATIVE_DOUBLE);
dataset.close();
file.close();

不确定如何使用H5Cpp 库完成此操作,但使用 HDFql 可以按如下方式解决(请注意,写入的数据将是零,因为您调用temp.setZero();(:

#include <HDFql.hpp>
#include <Eigen/Dense>
HDFql::execute("CREATE TRUNCATE AND USE FILE test_save.hdf5");
HDFql::execute("CREATE DATASET test_dataset AS DOUBLE(10, 5)")
Eigen::MatrixXd temp(10, 5);
temp.setZero();
sprintf(script, "INSERT INTO test_dataset VALUES FROM MEMORY %d", HDFql::variableTransientRegister(temp.data()));
HDFql::execute(script);