判斷讀入資料檔案結尾 從檔案讀入資料

2021-06-27 22:32:55 字數 1035 閱讀 6770

參考:

在使用c/c++讀檔案的時候,使用eof()這個函式來判斷檔案是否為空或者是否讀到檔案結尾的時候會有一些特殊情況:

先看**:

#include #include using namespace std;

int main()

e");

return 0;

}

上述**在vs2012下編譯執行,發現,當檔案結尾沒有空行時,結果正確;

當結尾有空行時,整個字串將被重複輸出一次,

若將條件語句修改為:

fin >> str         

則結果正確

綜上所述,

1. 判斷檔案是否為空時使用peek函式,若peek返回eof則檔案為空;

2. 讀取檔案過程中,讀取非char型時,使用peek判斷檔案尾將不再適用,迴圈判斷條件應改用》操作符進行讀取,若讀入char型緩衝區,peek函式會表現得很好。

另外,其實類似與第二個方法,當做acm之類的訓練題需要為了方便讀入資料自己建立檔案儲存資料時,還有乙個更直接的常用方法(雖然不是最優→_→),就是當需要讀入資料的時候,直接將讀入的資料作為判斷條件。

例如,輸入資料第一行為資料個數,第二行為資料,此時可直接將第一行作為迴圈讀入次數

測試程式:

#include "stdafx.h"

#include #include #include using namespace std;

int main()

//輸出讀入結果作測試

for(i =0; i < a.size(); i++)

cout<>n; }

return 0;

}

在cpp根目錄建立a.txt,內容如下(隨意)

3

21a5

1sd45

9985sdf#%6

大資料檔案快速讀入記憶體

下面是學習power8部落格敏感詞比賽的時候,用到了他人的 在此記錄一下,並對分享者表示感謝!先把檔案讀入記憶體,再對記憶體檔案進行轉碼等處理,比使用ifstream getline要快n倍!oid print as wide const char mbstr int main int argc,c...

Andriod從網路上讀入檔案

class txtdownloadonclicklistener implements view.onclicklistener start nullpointerexception異常,崩掉程式。在andriod4.0以後,對網路的訪問不能寫在主線程中了。可以在 中設定執行緒。網路的讀寫要用到io...

C 實驗 讀入檔案判斷詞數句數

熟悉 string 的處理 讀入待處理的檔案 處理檔案 統計檔案中共有多少個單詞,多少句話。讀入檔案,文章中有好多 一樣的特殊字元,首先需要將特殊字元處理掉。判斷詞數以空格為分隔符進行判斷,遇到空格單詞數加一。判斷句數以句號 感嘆號 問號 為界限符,遇到符號加一。將下面的材料複製貼上,放入txt檔案...