Чтение строки из hdf5 в переполнении стека

Я читаю в наборах данных из файла H5 в Microsoft Visual C ++ 2008. Все отлично работает для данных типа int и double, но я сталкиваюсь с проблемами, когда сталкиваюсь со строками. В файле H5 у меня есть 18 строк с фиксированной длиной 24. Мой код выглядит следующим образом;

StrType strdatatype(PredType::C_S1, 24);
char *buffer1[18];
DataSet datasetCurveNames = riskFactorsH5.openDataSet("/gstrCurveNames");

datasetCurveNames.read(&buffer1, strdatatype);

При выполнении buffer1 заполняется плохими указателями. В качестве альтернативы я попытался использовать H5T_VARIABLE для управления строками переменной длины с модификацией:

 StrType strdatatype(PredType::C_S1, H5T_VARIABLE);

Это также не удается. Если кто-то может пролить свет на эту проблему, это будет высоко ценится.

Ура,
Лукас

2

Решение

HDF5 C ++ API ужасно недокументирован. Вот как я читаю в строках из набора данных. Я понял это только с помощью IDE с дополнением кода:

using namespace H5;
std::string field_name("name of the field");
StrType datatype(0, H5T_VARIABLE);
DataSpace dataspace(H5S_SCALAR);
DataSet datset = group.openDataSet(field_name);

std::string field_value;
datset.read(field_value, datatype, dataspace);
6

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

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

char *buffer1[18];

от

char buffer1[18][24];

а также

datasetCurveNames.read(&buffer1, strdatatype);

должно быть

datasetCurveNames.read(buffer1, strdatatype);

(нет &)

1

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