想一行行读取数据,并且我希望是从第二行开始读取,即第一行的跳过去。
于是我用了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)
困惑很久了。究竟是哪里错了。。。