ifstream讀取檔案的坑

2021-06-18 02:26:53 字數 482 閱讀 7463

在c++開發中,經常使用到ifstream來開啟並讀取檔案內容,**如下:

string sfile(szfilename);

ifstream i_file(sfile.c_str());

while(!i_file.eof())

; i_file.getline(szbuf,4095);

}

能看出有什麼問題麼?

在工作中,發現乙個很有趣的問題,開發環境有乙個讀配置的cgi一直不退出,並且占用大量cpu,線上卻沒有問題,先確定是不是配置的原因,發現配置是好的。再gdb進去看,堆疊資訊顯示一直停留在memset,再看了一下**,也沒有看出有問題。

打log除錯,終於發現問題,getline讀不出來任何東西,while死迴圈,eof判斷失敗。這個原因是szfilename獲取失敗,導致檔案路徑為空,i_file沒有成功開啟檔案,而**沒有對檔案輸入流進行檢查,導致了死迴圈。

ifstream讀取txt檔案

c 寫課設 課設要求用c 寫,之前用的都是c語言。寫函式,裡面用到fread fwrite fclose等函式對檔案進行操作,但是我發現c 對檔案的操作好像不用這麼麻煩。包含 include fstream標頭檔案 直接呼叫ifstream ostream即可對txt檔案進行讀入記憶體和輸出到檔案的...

ifstream 檔案流讀取格式資料出現的問題

在檔案中均為數字的時候,需要將這些數字按整型讀取,可以直接利用檔案流進行讀取,但是一旦檔案中存在非數字字元的時候,比如出現字串就會出現異常。因此我們需要處理這種情況。下面這段程式可以處理這個問題。其實問題的關鍵就是在in.ignore 函式。該函式的原型為 istream ignore stream...

ifstream讀取檔案失敗和亂碼問題

ifstream讀取檔案失敗往往是由於路徑中包含中文字元而造成的,因為預設的ifstream物件無法識別出中文,從而導致路徑解析亂碼,無法找到檔案而失敗。原理介紹 每個ifstream物件內部都包含乙個locale變數,用來指定字元的解析 比較等所有相關規則。預設構造的locale變數,是以 c 規...