首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

CRichEdit 逐行读取文本求解,该怎么处理

2013-03-13 
CRichEdit 逐行读取文本求解我期望的程序功能是这样的:把一个 RichEdit 中的文本逐行读取到一个字符串中,

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);
}

热点排行