gpt4 book ai didi

c++ - 在 C++ 中从 HDF5 中读取复合数据类型的字符串

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:52:21 28 4
gpt4 key购买 nike

我有一个 hdf5 复合数据集,它是用 Python 构建的,我正试图从中读取数据。我有四列,其中一列是长度为 1 的字符串。我设法读取了除字符串列以外的所有内容。下面是我尝试只读取字符串列的示例代码:

#include <string>
#include <iostream>
#include "H5Cpp.h"

typedef struct data_type {
char string_column[1];
} data_type;

int main ( void )
{
int NBR_OF_ROWS = 28884;
H5::H5File file = H5::H5File(MY_FILE, H5F_ACC_RDONLY);
H5::DataSet dataset = H5::DataSet(file.openDataSet(MY_DATASET));

H5::CompType mtype(sizeof(data_type));
mtype.insertMember("member", HOFFSET(data_type, string_column),
H5::PredType::C_S1);
data_type *data = new data_type[NBR_OF_ROWS];
dataset.read(data, mtype);

std::cout << "string column " << data[0].string_column << std::endl;

return 0;
}

这会编译但不打印任何内容:(我试图在堆上分配数据数组但无济于事。我在 ubuntu 上使用 g++。

任何帮助将不胜感激。

最佳答案

我认为您的问题来自您使用的字符串数据类型。你没有指定大小,你只是说它是一个字符串

试着做一个H5::StrType长度为 1:

H5::StrType string_type(H5::PredType::C_S1, 1);

然后在复合数据类型中使用它:

mtype.insertMember("member", HOFFSET(data_type, string_column), string_type);

关于c++ - 在 C++ 中从 HDF5 中读取复合数据类型的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14416416/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com