我只是想从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;
}