假如用fstream開啟乙個空檔案(0位元組),再使用fs eof 會返回真值嗎

2025-01-25 21:05:16 字數 3607 閱讀 3779

1樓:網友

即使新建的乙個空檔案 在開頭也會有乙個位元組,存了乙個ascii碼為-1的資料。可以讀出來 讀了就會到feof了。

2樓:網友

對新開啟的空檔案,流標記是這樣設定的:

輸入流 ifstream 在檔案開啟時會自動檢測是否可讀,如果是空檔案則檢測失敗,自動設定 failbit 標記,但不會設立 eofbit 標記。

輸出流 ofstream 在檔案開啟時不檢測讀操作,因此 failbit 和 eofbit 都不會設定。

輸入輸出流 fstream 與 ifstream 一樣也會檢測讀,因此對空檔案來說 failbit 也是 true,但 eofbit 仍是 false

eofbit 只有當讀位置處於檔案結尾且再次手動讀取資料時才會被設定。

當使用 if(fs) 或 if(!fs) 的表示式時,實際上判斷了 fstream 的三個錯誤標記位:failbit eofbit badbit ,只有當三個都未設定時 if(fs) 才返回 true

因此對空檔案的 ifstream 或 fstream 可在檔案開啟後即由 if(fs) 來判斷是否可讀。

當檔案流被設立 ios::failbit 或 ios::eofbit 標記後,後面如果要再次正常使用這個流物件的話,這個標記必須要手動清除掉,不然所有讀寫動作都變為空操作。

在判斷 eof() 或 if(fs) 或 if(!fs) 後用 清除錯誤標記,然後 seekp() 到檔案開頭即可。

我用fstream代開乙個檔案查詢後,返回為什麼就打不開了啊

3樓:匿名使用者

用fstream開啟檔案,操作後要用close()關閉。

4樓:網友

不好意思,問一下,你這裡提到的「查詢函式」是什麼函式?是庫函式嗎?求指教。

c++讀取檔案如何實現從頭開始再讀一遍

5樓:網友

指標重新定於檔案頭。。。不知道你用的c,c++,api,還是mfc中的cfile類。

6樓:網友

seekg用於輸入檔案(ifstream)指標移到指定位置,如:seekg(0,ios::beg) 指標移向檔案開頭。

seekp用於輸出檔案(ofstream)。

移到開頭後就可以往下讀,用eof()判斷檔案是否讀到了結尾。

如:while(!。

7樓:網友

seekg(0,ios::beg) 指標移向檔案開頭,當然也可以重新開乙個ifstream

8樓:網友

呼叫seek,移動檔案指標到檔案頭。

如果使用fstream則是seekpos

檔案讀取都是從檔案指標的當前位置開始的。

如果使用mfc的cfile,則是seek

9樓:

移動檔案指標到檔案頭(你自己搜一下函式,記不得了),或關閉檔案重新開啟。

c++的fstream如何檢查乙個檔案是否成功開啟?

10樓:網友

1、可以測試是否能作為可讀檔案開啟,例如:

ifstream fin("")

if(!fin) cout<<"error!"<2、例程:

#include

#include

using namespace std;

#define filename "d:\\"

int main()

fstream file;

ios::in);

if(!file)

cout<

11樓:風若遠去何人留

用fstream開啟檔案後,可以用兩種方法判斷是否成功:

1 直接使用物件判斷。

如開啟後的fstream物件為fs,那麼。

if(!fs)cout <<"open failed";

即,邏輯非!運算過載,可以用來判斷開啟是否成功。

2 使用成員函式is_open。

這是乙個專門判斷是否開啟成功的成員函式。

if( cout <<"open success";

12樓:網友

換個方法試試吧:

先測試是否能北作為可讀檔案開啟:

ifstream fin("")

if(!fin) cout<<"error!"語言是一門靈活的學科,不要總想著有沒有現成的方法去達到你想要的效果,可以試著用你已掌握的知識去解決問題。希望對你有幫助~~~

13樓:黃邦勇帥哥哥

測試檔案開啟是否成功:如果檔案開啟有錯誤,比如讀取乙個不存在的檔案,當然對於寫入檔案來說不會出錯,因為寫入乙個不存在的檔案時會建立該檔案。測試檔案開啟是否成功可以直接對流進行測試,因為檔案開啟失敗時會把ios::

failbit位設為1,所以也可以呼叫流中的fail()函式來檢測檔案開啟是否成功。比如可以這樣測試檔案ifstream hy(「;直接對流進行測試比如while(hy){}表示檔案開啟成功則執行迴圈,或者測試fail函式比如while(;表示開啟失敗則執行迴圈,當讀取檔案到達檔案尾時程式會把ios::eofbit位設為1。

現行的檢測方法is_open()函式,如果檔案開啟成功則反回true否則反回flash,is_open函式是成員函式,使用時需要使用流類的物件來呼叫。對於過去一般使用常規的good(),fail()函式來檢查檔案是否開啟成功,而現在新式的is_open()函式同樣能實現上述這些函式的功能,而且還能提供這些函式無法實現的功能,比如以乙個不合適的檔案模式開啟檔案失敗時,這時只有good()和is_open()能檢測到這種錯誤。

c++ fstream.eof() 的問題

14樓:篤俠

原因是在讀出最後乙個字元時,還是為假的,只當讀過最後乙個字元再讀(讀不成功)時才變為真。由於最後一次沒有讀取成功,ch保持原值,所以最後乙個字元被多算一次。

讀取檔案的操作一般採用所謂n+1/2迴圈結構,即:將while(!

迴圈改為:in>>ch; //...

while(!

c++中fopen函式讀檔案怎麼用檔案資料

15樓:c_c_貓

用變數儲存啊。

一般是已知這個檔案中內容的格式,就直接fin>>就行了有時候也會讀到一些字串裡慢慢分析。

樓主問的是c++?c++不用fopen

下列c++中判斷檔案是否為空的方法有什麼不同

16樓:網友

首先宣告一點,if(!in)cout<<"空";

這句**不是用來判斷檔案是否為空的,而是判斷檔案是否成功開啟。

第一次執行時,ifstream in("c:\\",ios::in)這個語句發現沒有這個檔案,再檢查if(!in)cout<<"空";檔案不存在故不能成功開啟,故cout<<"空";

反過來,如果在目錄下建立,第一次執行,不可能顯示 空。我已經試過了。

如果到達相關聯的輸入檔案的末尾,eof()函式返回true,否則返回false。

假如有乙個女生喜歡乙個男生?

當女生喜歡上乙個人會有這些表現,男人如果發現,就不要錯過。現在的感情很複雜,雖然是這個男生向這個女生告白過,而且男生又把女生從qq中刪除了,這可能是這個女生做了一件讓男生看不上的事情,讓男生覺得噁心,所以這個男生就不理他了,見到她就像陌生人一樣,這充分說明了這個男生已經不愛他了。應該是不喜歡了。男生...

假如你追求女孩,假如你追求一個女孩。

我覺得她只是想跟你做朋友而已,並不是喜歡你 如果討厭你的話就刪掉你的 人不可能會把事情做得這麼絕,而刪掉你 所以,我勸你還是另找女孩子吧 說難聽點,追了這麼久,扣都不理你了,你還這麼死死糾纏幹嘛 他只是給你個面子罷了。你又不是那比別人差,他看不上你,是他沒眼光,眼光放遠點,難道就這麼點挫折,你自己就...

每開乙個網頁就會跟著跳出來乙個網頁,怎麼才能把它給去掉呢?

超級兔子的使用次序一般是這樣的。首先使用超級兔子清理王,清除惡意外掛程式和流氓 然後使用超級兔子ie修復專家 修理被幫定的瀏覽器設定之後使用超級兔子的上網精靈,鎖定系統主頁,遮蔽惡意 一般經過這幾個步驟,這些垃圾軟體都會被清除的,個別的需要重啟才能見效。建議用upiea upiea是個免費小巧無需安裝快...