簡體   English   中英

C ++:.eof在空文件上

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM