我有HDF5文件,其中的属性格式为
ATTRIBUTE "dtype" {
DATATYPE H5T_STRING {
STRSIZE 8;
STRPAD H5T_STR_NULLPAD;
CSET H5T_CSET_ASCII;
CTYPE H5T_C_S1;
}
DATASPACE SCALAR
DATA {
(0): "waveform"
}
}
我想从属性中检索波形。我尝试了下面的代码片段,但它崩溃了
Group* signalgroup = new Group(outputgroup->openGroup(signalgrpName));
Attribute *attr = new Attribute(signalgroup->openAttribute("dtype"));
DataType *type = new DataType(attr->getDataType());
H5std_string test;
attr->read(*type, &test); //crashes here
有关如何阅读本文的任何意见?
答案 0 :(得分:0)
这很晚了,但是我偶然发现了这个问题,寻找了类似的东西。 HDF5 API具有重载的attribute.read()
函数,该函数通过引用(而不是通过指针)引入std::string
。
请参见此处的文档:https://support.hdfgroup.org/HDF5/doc/cpplus_RM/class_h5_1_1_attribute.html#a8dae50d14de724c87507cba37f86793d(在下面引用)
void H5::Attribute::read(const DataType& mem_type, H5std_string& strg) const
Parameters
mem_type - IN: Attribute datatype (in memory)
strg - IN: Buffer for read string