我只是想知道爲什麼我得到這些錯誤。我已經包含H5cpp.h.Here我只是想從現有的hdf5數據庫讀取一個字符串。此外我不知道如何定義memspace。謝謝打開hdf5字符串數據集
Reader.cpp: In member function ‘void Reader::SetFasta()’:
Reader.cpp:10: error: ‘DataSet’ was not declared in this scope
Reader.cpp:10: error: expected ‘;’ before ‘dataset’
Reader.cpp:11: error: ‘DataSpace’ was not declared in this scope
Reader.cpp:11: error: expected ‘;’ before ‘dataspace’
Reader.cpp:12: error: ‘dataset’ was not declared in this scope
Reader.cpp:12: error: ‘PredType’ has not been declared
Reader.cpp:12: error: expected unqualified-id before ‘(’ token
Reader.cpp:12: error: ‘memspace’ was not declared in this scope
Reader.cpp:12: error: ‘dataspace’ was not declared in this scope
Reader.h
#ifndef READER_H
#define READER_H
#include <string>
#include "H5Cpp.h"
#define FILEHDF "/media/data/back_up.h5"
class Reader
{
private:
hid_t file_id, dataset_id, dataspace_id, group_id,strtype, memtype;
hsize_t dims[1];
herr_t status;
std::string m_fasta;
Reader() {}
public:
Reader(std::string prot_name);
void SetFasta();
std::string GetFasta() {return m_fasta;}
};
#endif
Reader.cpp
#include "Reader.h"
Reader::Reader(std::string prot_name)
{
file_id=H5Fopen(FILEHDF, H5F_ACC_RDWR, H5P_DEFAULT);
group_id=H5Gopen2(file_id, prot_name.c_str(), H5P_DEFAULT);
SetFasta();
}
void Reader::SetFasta()
{
DataSet dataset=file_id.openDataSet("Fasta_seq");
DataSpace dataspace=dataset.getSpace();
dataset.read(m_fasta, PredType::H5T_C_S1, memspace, dataspace);
}
的main.cpp
#include <iostream>
using namespace std;
#include <string>
#include "Reader.h"
#include "H5Cpp.h"
int main()
{ std::string prot_name, fasta_seq;
prot_name="102LA";
Reader rd(prot_name);
fasta_seq=rd.GetFasta();
cout<<fasta_seq;
return 0;
}
感激,如果你能與我的情況的解決方案幫助... http://stackoverflow.com/questions/28792297/hdf5-c-api-read-multiple-dataset-from -a單H5文件 – lorniper