在TXT中進行文件讀寫

一般來講往文件中讀寫數據都是按字節數來計算的,但是如果一個txt文件的各行長短不一,但需要以行爲單位進行讀寫,該如何實現哪?
累類CStdioFile提供了對文件進行流式的操作功能。其中函數void CStdioFile::WriteString( LPCTSTR lpsz )寫入一個字符串,需要給字符串lpsz的末尾加上換行標誌”/r/n”;函數bool CStdioFile::ReadString(CString &rString )從文件中讀取一行,如果文件未讀完返回true,否則返回false。
相關代碼如下:

void CRdWrtByLineDlg::OnSave()
{
UpdateData(TRUE);

//創建文件
CStdioFile file;
file.Open("ts.txt",CFile::modeCreate|CFile::modeWrite);

//獲得文本的行數
CRichEditCtrl* pEdit = (CRichEditCtrl*)GetDlgItem(IDC_RICHEDIT1);
int nCount = pEdit->GetLineCount();

char szLine[200];
for( int i=0;i {
//第i行的長度
int nLenth = pEdit->LineLength( pEdit->LineIndex( i ) );

//獲得第i行的字符串
pEdit->GetLine( i,szLine,nLenth );
szLine[nLenth] = 0;

//將第i行寫入文件
CString str;
str.Format(”%s/r/n”,szLine);
file.Seek(0,CFile::end);
file.WriteString( str );
}

file.Close();
}

void CRdWrtByLineDlg::OnRead()
{
CString strText = “”;
CString szLine = “”;

//打開文件
CStdioFile file;
file.Open(”ts.txt”,CFile::modeRead);

//逐行讀取字符串
while( file.ReadString( szLine ) )
{
strText += szLine;
}

//顯示字符串
CRichEditCtrl* pEdit = (CRichEditCtrl*)GetDlgItem(IDC_RICHEDIT1);
pEdit->SetWindowText( strText );

file.Close();
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章