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

c++-急!MFC 文本讀寫的問題

編輯:編程解疑
急!MFC 文本讀寫的問題

我想只改寫文本的第一行數據

 void EditView::WriteInTitle(CString strName, CString lpsz)
{
    CFile WriteFile;
    WriteFile.Open(strName, CFile::modeWrite | CFile::modeRead | CFile::typeBinary);

    CString subStr = "\r";   //要被刪除的子串
    int index = lpsz.Find(subStr);
    while (index!= -1)
    {
       lpsz.Delete(index, subStr.GetAllocLength());
       index = lpsz.Find(subStr);
    }

    lpsz = lpsz + "\r\n";
    LPCTSTR s = lpsz.GetBuffer(lpsz.GetLength());
    WriteFile.Write(s, lpsz.GetLength()*sizeof(CHAR));
    WriteFile.Close();
}

但是我覆蓋了第一行後,後面就亂碼了。。
目測是寫入長度出問題了。。應該是覆蓋到了第二行的文字。
但是這裡長度不對嗎?為什麼會超出第一行的文字長度?

最佳回答:


 CString ReplaceFirstLine(CString s, CString newline)
{
    if (s.IsEmpty()) return newline;
    LPCTSTR sc = (LPCTSTR)s;
    int i;
    int p = -1; 
    for (i = 0; i < strlen(sc) - 1; i++)
    {
        if (sc[i] == '\r' && sc[i + 1] == '\n')
        {
            p = i;
            break;
        }
    }
    if (p == -1) return newline;
    return CString(newline + CString(sc + i));
}

void CApp2Dlg::OnButton1() 
{
    // TODO: Add your control notification handler code here
    CString str;
    CString t = "title";
    m_edit.GetWindowText(str);
    str = ReplaceFirstLine(str, t);
    m_edit.SetWindowText((LPCTSTR)str);
}
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved