void EditView::WriteInTitle(CString strName, CString lpsz)
{
CFile WriteFile;
WriteFile.Open(strName, CFile::modeWrite | CFile::modeRead | CFile::typeBinary);
lpsz = lpsz + "\r\n";
LPCTSTR s = lpsz.GetBuffer(lpsz.GetLength());
WriteFile.Write(s, lpsz.GetLength()*sizeof(CHAR));
WriteFile.Close();
}
以上代碼是修改文本第一行內容,但是執行後卻把第二行的一部分也覆蓋了。
有沒有什麼一行行修改數據的方法?
文檔前面的數據長度變了,再直接這樣寫回是不行的,因為長度變化影響了後面數據在存盤的排序。如果只是每個字符一一對應的等字節長度替換,像 Hex Workshop 那樣,即使用是幾個G的大文件,也是可以瞬間完成修改的,因為文件長度和內容排列都沒變,即要針對存盤的二進數據修改就好了。