我試圖用ifstream和所有try和catch方法打開一個文件。我想測試閱讀功能。而Im試圖讀取更多的文件長度即時獲取異常。但是,錯誤按摩:閱讀功能失敗時的成功消息
Error:basic_ios::clear: Success
我的代碼:
void OpenFile(char* raw_slice) throw(std::ios_base::failure, std::string) {
ifstream init;
init.exceptions(ifstream::failbit | ifstream::badbit | ifstream::eofbit);
try {
init.open("/home/path/file", ios_base::in | ios_base::binary);
}catch(const ifstream::failure &e) {
cerr << "Error:" << e.what() << ": " << strerror(errno) << endl;
throw;
}
try {
init.read((char*)raw_slice, 1000); //out of bound of source file
}catch (const ifstream::failure &e){
cerr << "Error:" << e.what() << ": " << strerror(errno) << endl;
throw;
}
try{
init.close();
}catch(const ifstream::failure &e){
cerr << "Error:"<< e.what() << ": " << strerror(errno) << endl;
throw;
}
}
int main()
{
char* buf = new char[72];
try{
OpenFile(buf);
}catch (const ifstream::failure &e){
cerr << "Error in main:" << e.what() << ": " << strerror(errno) << endl;
delete[] buf;
return 0;
}catch (const string &e) {
cerr << "Error in main:: " << e << endl;
delete[] buf;
return 0;
``}
delete[] buf;
return 1;
}
任何想法,爲什麼?我一直在尋找閱讀功能的返回值,並找不到這種行爲的答案。
但什麼號碼意味着EOF位? – raptor0102
您通常不檢查實際值,您將rdstate的返回值與要檢查的位進行比較。 http://www.cplusplus.com/reference/ios/ios/rdstate/ – Thesane