日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C++ eof()函数陷阱

發布時間:2025/4/14 c/c++ 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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()函数陷阱的全部內容,希望文章能夠幫你解決所遇到的問題。

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