我有這樣的代碼:ifstream的EOF函數(C++)
string a = "D:\\Users\\user-pc\\Desktop\\testing\\a.txt";
ifstream f;
/*edit*/ string line;
/*edit*/ getline(f, line);
f.open(a);
if (f.eof())
cout << "ended";
else
cout << "nope"
和文件 'A.TXT' 它有什麼也沒有。
輸出是nope,一直沒有。我不明白..我用錯了嗎?
編輯:仍然.EOF()不工作
可能的[C++ eof()問題重複 - 永遠不會返回true?](http://stackoverflow.com/questions/3842030/c-eof-problem-never-returns-true) – Mgetz
'此函數只報告流狀態由最近的I/O操作設置,它不檢查關聯的數據源。換句話說,你需要先嚐試閱讀,然後才能評估狀態。 – Till
爲了詳細說明其他的註釋:你必須做一個像'f.get()'的操作,然後檢查'f.eof()' - 那麼它就是'true'。但是,如果文件不是空的,第一個'char'就會被拋棄。要做你真正打算的,你可以使用'if((f.rdbuf() - > in_avail())== 0)'。所以你可以真正檢查文件中有多少個字符而不用提取它們。 – mb84