Чтение строки составного типа данных из HDF5 в переполнении стека

У меня есть составной набор данных 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;
}

Это компилирует, но ничего не печатает 🙁 Я пытался выделить массив данных в куче, но безрезультатно. Я использую g ++ в Ubuntu.

Любая помощь будет высоко ценится.

2

Решение

Я думаю, что ваша проблема связана с типом данных строки, который вы используете. Вы не указали размер, вы только что сказали это строка.

Попробуй сделать H5::StrType длиной 1:

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

затем используйте его в составном типе данных:

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

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]