如何用readstring()來讀檔案

2021-06-21 05:33:26 字數 900 閱讀 2055

對於一般檔案的讀取,建議還是用cstdiofile來進行行的讀與寫操作,這樣非常方便的.

[問題提出]

一資料檔案一行一條記錄,我用file.readstring()一次讀一行,並對讀取的資料做一些處理;

請問:while(檔案還沒到結尾)

??檔案還沒到結尾如何判斷?

如果,到了指定位置不讀了,過一會兒再讀又如何做?

[解決方法]

while()中不用另加判斷條件了,因為cstdiofile::readstring()本身就是判斷標誌,若沒有了(檔案到頭)返回null,因此:while(file.readstring(s)){}就可.

[程式實現]

假設你已有了名為ts.txt的檔案在你的工程目錄下:

o=file.getposition();//記錄上次的結果(讀到哪了)

.................

file.seek(o,0);//接著上回讀

while(file.readstring(sss))

}

注意:當檔案的最後一行資料,正好是128的倍數個字元的時候,用readstring讀取,一定會返回false。但實際上讀取是成功的,返回的cstring中的資料是正確的。(vc6.0中存在這個bug,vs2005中,沒有這個bug)。
解決辦法是修改迴圈結束的條件:while (file.readstring(strline) != false || sss.getlength() != 0)

在返回false的情況下,cstring的長度不為0,就不算讀取失敗。

或者這樣:

if(!file.readstring(str) && sss.getlength() == 0)

在返回false並且cstring的長度為0,則算讀取失敗,否則就是讀取成功。

如何用expect讀檔案

之前我寫expect指令碼喜歡在bash中嵌入here document來實現,因為這樣往expect指令碼中傳shell變數比較方便。結果最近發現有個問題,當我用while讀檔案的時候,變數值全部為空。這是因為here document中把變數當作是bash的變數,而不是expect中的變數。所以...

如何用ResourceBundle來讀取配置檔案

對於ja va基礎很好的人來說,這個應該是簡單的不能再簡單的了。不過估計一些ja va新手不一定會知道 比如我,上次為別人寫乙個東西,需要從外存讀檔案來設定物件的值,因為不知道有resourcebundle這種東西,就自己用filereader在那搞,折騰了半天,最後還不能把配置檔案和jar包打在一...

如何用ResourceBundle來讀取配置檔案

對於ja va基礎很好的人來說,這個應該是簡單的不能再簡單的了。不過估計一些ja va新手不一定會知道 比如我,上次為別人寫乙個東西,需要從外存讀檔案來設定物件的值,因為不知道有resourcebundle這種東西,就自己用filereader在那搞,折騰了半天,最後還不能把配置檔案和jar包打在一...