[英]C++: .eof on an empty file
讓我們看看這個程序:
ifstream filein("hey.txt");
if(filein.eof()){
cout<<"END"<<endl;
}
這里“hey.txt”是空的。 所以這里的if條件被認為應該是真的但它不是
盡管文件為空,為什么eof不返回true?
如果我在之前添加了這個, if
eof返回true,雖然arr
仍為空並且文件仍為空,因此兩者都保持不變
char arr[100];
filein.getline(arr,99);
程序嘗試讀取文件末尾后,
eof()
函數返回“true”。
您可以使用std::ifstream::peek()
來檢查“邏輯文件結束”。
標志std::ios_base::eofbit
在嘗試讀取時到達流的末尾時設置。 在嘗試讀取流的末尾之前,將不會設置此標志。
通常, std::ios_base::eofbit
的使用相當有限。 唯一合理的用途是在讀取失敗后抑制錯誤:如果由於到達文件末尾而導致讀取失敗通常不會出錯。 嘗試將此標志用於其他任何內容都不起作用。
eof()
測試是否在C ++流對象上設置了“end of file”標志。 當讀取操作吸引來自底層設備(文件,標准輸入,管道等)的輸入結束時,將設置此標志。 在嘗試讀取空文件之前,不會設置標志。 您必須執行一個操作,在將在流對象上設置標志之前嘗試讀取內容。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.