我想獲取指紋數據(我創建和存儲爲另一個代碼中的文本文件),我必須與此代碼中的新指紋進行比較。問題在於指紋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