程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程解疑 >> c++-MFC CStdioFile::ReadString()的問題

c++-MFC CStdioFile::ReadString()的問題

編輯:編程解疑
MFC CStdioFile::ReadString()的問題

想一行行讀取數據,並且我希望是從第二行開始讀取,即第一行的跳過去。
於是我用了ReadString(),並且打開文件後先讀取第一行,但是不保存第一行的數據,然後從第二行開始儲存數據,代碼如下:

 void RichEditView::ReadArticle(CString strName)
{
    CMainFrame* pFrame = (CMainFrame*)AfxGetMainWnd();
    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);
}

運行正常的,正常讀取出來,但是我讀取完打開文件發現文本內容被改了。。
見圖:
圖片說明

原本的數據

圖片說明

讀取並顯示(第一行和第二行是兩個視圖在顯示)

圖片說明

之後打開文本發現數據變了

圖片說明

再次讀取顯示也出問題了

於是我把讀取第一行的那個

 File.ReadString(str); // 讀取第一行,不保存

語句注釋掉,再重復上面的操作,一切正常,但是這顯然不是我要的效果,
而且我發現貌似讀取一次後,第二次讀取顯示的第一行是原來顯示的第二行(即tttttt)
困惑很久了。究竟是哪裡錯了。。。

最佳回答:


這段代碼的確沒有修改文件,但是你有沒有別的地方寫了文件。打開文件什麼也不做,在任務管理器強行關閉,看看會改文件麼

qq_28254507
qq_28254507
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved