ifstream讀取文件的坑

在c++開發中,經常使用到ifstream來打開並讀取文件內容,代碼如下:

string sFile(szFileName);
ifstream i_file(sFile.c_str());

while(!i_file.eof())
{
    char szBuf[4096] = {0};
    i_file.getline(szBuf,4095);
}

能看出有什麼問題麼?


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

打log調試,終於發現問題,getline讀不出來任何東西,while死循環,eof判斷失敗。這個原因是szFileName獲取失敗,導致文件路徑爲空,i_file沒有成功打開文件,而代碼沒有對文件輸入流進行檢查,導致了死循環。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章