ihmin
2024. 3. 8. 11:22
hdf5 포맷 r/w 용으로 나온 표준 libhdf5 를 사용하면 코딩량이 많을수밖에 없다..
찾아보니 h5pp 라는 라이브러리가 있길래 테스트해봄.
https://github.com/DavidAce/h5pp
코드도 짦아지고.. 백터도 지원하고 좋은것 같음.
#include <h5pp/h5pp.h>
typedef struct {
unsigned int id;
float x, y, z;
} T_NODE;
int main(int argc, char *argv[])
{
//h5pp::File file("test.h5", h5pp::FileAccess::REPLACE, 0);
h5pp::File file("test.h5", h5pp::FileAccess::REPLACE);
h5pp::hid::h5t T = H5Tcreate(H5T_COMPOUND, sizeof(T_NODE));
H5Tinsert(T, "id", HOFFSET(T_NODE, id), H5T_NATIVE_INT);
H5Tinsert(T, "x", HOFFSET(T_NODE, x), H5T_NATIVE_FLOAT);
H5Tinsert(T, "y", HOFFSET(T_NODE, y), H5T_NATIVE_FLOAT);
H5Tinsert(T, "z", HOFFSET(T_NODE, z), H5T_NATIVE_FLOAT);
std::vector<T_NODE> nodes;
T_NODE node;
node.id = 1;
node.x = 1.0;
node.y = 1.0;
node.z = 1.0;
nodes.push_back(node);
nodes.push_back(node);
nodes.push_back(node);
nodes.push_back(node);
nodes.push_back(node);
file.writeDataset(nodes, "/nodes", T);
std::vector<std::string> lines;
lines.push_back("this is a vector");
lines.push_back("of strings");
lines.push_back("of varying lengths");
file.writeDataset(lines, "/lines");
return 0;
}