日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

C++ eof()函数陷阱

發布時間:2025/4/14 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++ eof()函数陷阱 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

C++中用eof()檢查是否到達文件結尾

分類:?C 編程?2007-06-26 11:15

到達文件結尾有兩種可能的解釋:

一是當程序從一個文件讀取數據時,在程序讀取文件中的最后一項之后就立即出現文件結束的條件。另一種是只有當程序想越過文件的最后一項進行讀取時才出現文件結束的條件。

Ada和Pascal采用第一種解釋。在這些語言中,一個從外部文件讀取數據的DO循環應該形如(用C++語言來寫):

do{

if (infile.eof()) break;

double amount;

infile>>amount;

......}

C++,JAVA采用第二種解釋,在這些語言中,一個從外部文件讀取數據的DO循環應該形如(用C++語言來寫):

do{

double amount;

infile>>amount;

if(infile.eof()) break;

......}

如果在一個c++程序中使用了第一種循環結構,會發生什么情況呢?最后一個值將從文件中讀取并由循環的余部分處理,在下一次循環中eof()將返回false,于是語句infile>>amount;將又執行一次。當沒有數據時,將出現文件結束的條件,但內存中amount的值仍然是一樣的(在大多數系統中)。由于程序不知道已經沒有數據,循環的余下部分將繼續處理最后一個值,好像它在輸入文件中出現了兩次一樣。在下一次循環中,將出現文件結束的條件,于是循環終止。

(在C++中,文件的結束符在程序從文件中讀取最后一項時并沒有出現。它是在下一次讀取時,即當程序想越過最后一個文件項讀取時才出現)

也可以用infile.fail()來檢查。

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的C++ eof()函数陷阱的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。