Настройка атрибутов в наборах данных с использованием HDF5 С++ api
Я использую HDF5 С++ API в HDF5 1.8.7 и хотел бы использовать экземпляр H5:: Attribute для установки пары скалярных атрибутов в экземпляре H5:: DataSet, но не может найти никаких примеров. Это довольно вырезано и сухое использование C API:
/* Value of the scalar attribute */
int point = 1;
/*
* Create scalar attribute for the dataset, my_dataset.
*/
aid2 = H5Screate(H5S_SCALAR);
attr2 = H5Acreate(my_dataset, "Integer attribute", H5T_NATIVE_INT, aid2,H5P_DEFAULT);
/*
* Write scalar attribute to my_dataset.
*/
ret = H5Awrite(attr2, H5T_NATIVE_INT, &point);
/*
* Close attribute dataspace.
*/
ret = H5Sclose(aid2);
/*
* Close attribute.
*/
ret = H5Aclose(attr2);
По какой-то странной причине классы H5:: Attribute и H5:: DataSet в С++ API, похоже, не имеют необходимых методов. Если кто-нибудь может придумать конкретный пример с использованием С++ API, я был бы очень благодарен.
Ответы
Ответ 1
если у вас есть объект Dataset ds...
добавление строкового атрибута...
StrType str_type(0, H5T_VARIABLE);
DataSpace att_space(H5S_SCALAR);
Attribute att = ds.createAttribute( "myAttribute", str_type, att_space );
att.write( str_type, "myString" );
добавление атрибута int...
IntType int_type(PredType::STD_I32LE);
DataSpace att_space(H5S_SCALAR);
Attribute att = ds.createAttribute(" myAttribute", int_type, att_space );
int data = 77;
att.write( int_type, &data );