CRichEdit 逐行读取文本求解
我期望的程序功能是这样的:
把一个 RichEdit 中的文本逐行读取到一个字符串中,再对它进行处理,代码如下:
CRichEditCtrl * seqREditPtr = ( CRichEditCtrl * )GetDlgItem( IDC_REDITSeq );
int nLineLength, nLineCount = seqREditPtr->GetLineCount();
char sequence[256];
char s[256];
for ( int i = 0; i < nLineCount; ++i ) {
nLineLength = seqREditPtr->LineLength( i );
seqREditPtr->GetLine( i, sequence );
::sprintf( s, "S%sS", sequence );// 为了看出明显的效果而做的处理
MessageBox( s );
}
但是很明显的程序运行异常,原因是在读出的每行末尾总是多出一个换行符,用 MessageBox 打出来看的很明显,第二个 S 与文本框中的字符串之间多了一个换行符,这到底是怎么回事呢,我对读出来的字符串的最后一个元素进行处理,看它是不是换行符,如果是则替换成 '\0',也不能解决问题,查遍各大网站论坛也无解,纠结很久了,有大虾有类似的经验吗?请教
[解决办法]
CRichEditCtrl* pEdit = (CRichEditCtrl*)GetDlgItem(IDC_RICHEDIT1);
int nLineLength, nLineIndex, nLineCount = pEdit->GetLineCount();
CString strText, strLine;
// Dump every line of text of the rich edit control.
for (int i = 0; i < nLineCount; i++)
{
nLineIndex = pEdit->LineIndex(i);
nLineLength = pEdit->LineLength(nLineIndex);
pEdit->GetLine(i, strText.GetBufferSetLength(nLineLength + 1),
nLineLength);
strText.SetAt(nLineLength, _T('\0')); // null terminate
strText.ReleaseBuffer(nLineLength + 1);
AfxMessageBox(strText);
}