在C++中,是否有這種情況,std::ifstream open()
可以成功,但std::ifstream good()
可能是假的?成功開放但不好?
編輯:用克測試++ 4.7.1
#include <iostream>
#include <fstream>
int main(int argc, char *argv[])
{
std::ifstream filestream("testfile");
std::cout<<filestream.good()<<std::endl;
std::cout<<filestream.eof()<<std::endl;
std::cout<<filestream.fail()<<std::endl;
std::cout<<filestream.bad()<<std::endl;
return 0;
}
將返回:1,0,0,0爲一個空文件,這意味着good = TRUE
和eof = fail = bad = FALSE
。這是正常的嗎?
+1實現可能實際上不會測試文件,直到您嘗試讀取並且讀取失敗。 –
@DavidRodríguez-dribeas通常,在輸入失敗之前測試'eofbit'是沒有意義的。事實上'std :: ifstream :: good()'測試'eofbit'(除了其他狀態位)使得它幾乎沒有價值。 –
我不認爲使用「好」的提問者有任何*傷害*嗎?只是因爲'eofbit'沒有設置,所以你不妨像正常一樣測試流的真相。我認爲在做一些毫無意義的異常時,可讀性受到損害,並且像你說的那樣,「良好」的使用是毫無意義的異常...... –