hdf5组在C ++中打开

时间:2013-12-03 17:28:47

标签: c++ hdf5

我只是想从hdf数据库中打开一个组。我将组名保存在字符串变量中。但是C ++编译器给出了以下错误。因为我在C ++中这样做,所以我想坚持使用字符串。有解决方案吗谢谢

Reader.cpp:在构造函数“Reader :: Reader(std :: string)”中: Reader.cpp:5:错误:无法将'std :: string'转换为'const char *'以将参数'2'转换为'hid_t H5Gopen2(hid_t,const char *,hid_t)'

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 fasta);
  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, H5P_DEFAULT); //error is coming from here
  SetFasta(prot_name);
}
void Reader::SetFasta(std::string fasta)
{
 m_fasta=fasta;
}

的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;
}

0 个答案:

没有答案