我的任務我正在構建一個堆,堆的數據來自一個文件。其中一個功能是獲取數據,但我無法理解的ifstream的read()函數和我已經相當因爲它這個討厭的錯誤是什麼,我有:C++堆和ifstream閱讀函數
template<class T, class P>
void get_list(vector<T>& v, const char* file_loc, P func) {
T data;
ifstream inFile;
inFile.open("file_loc");
if (!inFile) {
cerr << "Error - unable to open input file\n";
exit(1);
}
inFile.read(&data, sizeof(T));
while (inFile) {
inFile.read(&data, sizeof(T));
insert(v,data,func);
}
inFile.close();
}
錯誤我收到是:
prog7.h:53: error: no matching function for call to
‘std::basic_ifstream<char, std::char_traits<char> >::read(int*, long unsigned int)’
/usr/include/c++/4.3/istream:468: note: candidates are: std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT,_Traits>::read(_CharT*, std::streamsize)
[with _CharT = char, _Traits = std::char_traits<char>]
任何幫助將不勝感激!
'inFile >> data'和'infile.read(...)'完成不同的事情。 – 2010-11-02 23:09:58
@Marcelo Cantos:的確如此。我只是覺得他應該知道他想做的兩件事中的哪一件。 – Akusete 2010-11-02 23:17:41
我只在你的答案中注意到了二進制與文本的解釋。如果我在寫評論時已經在那裏,我們表示歉意。 – 2010-11-02 23:23:39