Đưa ra một chuỗi các chuỗi, cách tốt nhất để viết chúng ra một tập dữ liệu HDF5 là gì? Hiện nay tôi đang làm một cái gì đó như sau:Làm thế nào để viết tốt nhất một std :: vector <std :: string> container vào một tập dữ liệu HDF5?
const unsigned int MaxStrLength = 512;
struct TempContainer {
char string[MaxStrLength];
};
void writeVector (hid_t group, std::vector<std::string> const & v)
{
//
// Firstly copy the contents of the vector into a temporary container
std::vector<TempContainer> tc;
for (std::vector<std::string>::const_iterator i = v.begin()
, end = v.end()
; i != end
; ++i)
{
TempContainer t;
strncpy (t.string, i->c_str(), MaxStrLength);
tc.push_back (t);
}
//
// Write the temporary container to a dataset
hsize_t dims[] = { tc.size() } ;
hid_t dataspace = H5Screate_simple(sizeof(dims)/sizeof(*dims)
, dims
, NULL);
hid_t strtype = H5Tcopy (H5T_C_S1);
H5Tset_size (strtype, MaxStrLength);
hid_t datatype = H5Tcreate (H5T_COMPOUND, sizeof (TempConainer));
H5Tinsert (datatype
, "string"
, HOFFSET(TempContainer, string)
, strtype);
hid_t dataset = H5Dcreate1 (group
, "files"
, datatype
, dataspace
, H5P_DEFAULT);
H5Dwrite (dataset, datatype, H5S_ALL, H5S_ALL, H5P_DEFAULT, &tc[0]);
H5Dclose (dataset);
H5Sclose (dataspace);
H5Tclose (strtype);
H5Tclose (datatype);
}
Tối thiểu, tôi thực sự muốn thay đổi trên để:
- Nó sử dụng chuỗi dài biến
- tôi don không cần phải có thùng chứa tạm thời
Tôi không có giới hạn về cách lưu trữ dữ liệu, chẳng hạn, nó không phải là COMPOUND datatype nếu có một cách tốt hơn để làm điều này.
CHỈNH SỬA: Chỉ để thu hẹp sự cố, tôi khá quen thuộc với việc chơi với dữ liệu ở phía C++, đó là mặt HDF5 nơi tôi cần hầu hết sự trợ giúp.
Cảm ơn sự giúp đỡ của bạn.
Bạn biết không? HDF5 là một trong những điều tôi luôn muốn đọc và viết. Nhưng sự trì hoãn là tên đệm của tôi đã không được thực hiện. Nhờ bạn, tôi đã quyết định cho nó một shot chuyên dụng hơn lần này. Tôi rất, rất quan tâm để biết, nơi bạn đang sử dụng này, nếu có thể. – dirkgently
Chúng tôi đang tìm cách thay đổi cách công cụ phân tích tĩnh lưu trữ dữ liệu mà nó tập hợp từ phân tích của nó. Dữ liệu sẽ chứa cây như cấu trúc (phạm vi, loại vv) và danh sách chẩn đoán. Ở giai đoạn này, tôi chỉ đánh giá HDF5 xử lý các loại dữ liệu khác nhau như thế nào. –
Câu hỏi này (mà tôi đã hỏi) phác thảo loại tính năng mà chúng tôi đang đánh giá: http://stackoverflow.com/questions/547195/evaluating-hdf5-what-limitations-features-does-hdf5-provide-for-modelling -data –