我想获取指纹数据(我创建和存储为另一个代码中的文本文件),我必须与此代码中的新指纹进行比较。问题在于指纹API需要将指纹数据传递为字符指针。我使用下面的代码:从txt文件复制数据到字符指针在c + +
std::ifstream infile("timestamp.txt");
char* text_stream;
std::string line;
if (infile.is_open()){
while (getline (infile,line)){
if(text_stream){
*text_stream = malloc (1 + strlen (line));
strcpy(text_stream,line);
}
else{
fprintf (stderr, "malloc failure!");
}
}
infile.close();
}
我一直在使用其他代码为同一目的也试过,但我得到这样的编译错误,每次的:
verifiy.cpp: In function ‘int main()’:
verifiy.cpp:29:47: error: cannot convert ‘std::string {aka std::basic_string<char>}’ to ‘const char*’ for argument ‘1’ to ‘size_t strlen(const char*)’
*text_stream = malloc (1 + strlen (line));
^
verifiy.cpp:30:31: error: cannot convert ‘std::string {aka std::basic_string<char>}’ to ‘const char*’ for argument ‘2’ to ‘char* strcpy(char*, const char*)’
strcpy(text_stream,line);
^
除非指纹API特别需要'malloc'分配的缓冲区,否则不要使用'malloc'。除非指纹API特别需要一个持久性字符缓冲区,只要使用'std :: string :: c_str()'来获取char指针(即使它需要一个持久缓冲区,那么只需使用一个“std :: string”你不会修改它,所以它不会移动缓冲区)。 – hyde