首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

MFC CStdioFile ReadString 二次讀取異常問題

     編輯:程式設計疑難解答

程式碼片段

void RichEditView::ReadArticle(CString strName) {
    CString content = "";
    CStdioFile File;
    CString fileName = strName;
    if (File.Open(fileName, CFile::modeRead | CFile::typeBinary)) {
        File.SeekToBegin();
        CString str;
        File.ReadString(str); // 首次讀取
        while (File.ReadString(str)) { // 迴圈讀取後續行
            content += str;
            AfxMessageBox(str);
        }
        File.Close();
    } else AfxMessageBox("讀取失敗!");
    ::SetWindowText(this->GetRichEditCtrl().m_hWnd, content);
}

現象

第一次讀取正常,第二次調用同函式讀取同檔案時內容變空白,但檔案實際內容未變。

可能原因與排查

  • 檔案指標未重置:確認 SeekToBegin() 是否生效。
  • 檔案被其他進程鎖定或內容已被修改。
  • 讀取模式 typeBinary 可能導致換行符處理異常,嘗試改用 typeText。
  • 檢查 strName 路徑在第二次調用時是否發生變化。

建議

加入斷點檢查第二次 File.Open 返回值、檔案指標位置、實際讀取到的字串長度。若問題依在,嘗試用 CFile::typeText 並逐行讀取除錯。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved