//本函数主要将/r或是/n替换为/r/n,因为冒泡时单个的/r或/n不会换行,影响显示
void CMainFrame::PreHandleChineseDesc(CString &strDesc)
{
CString strResult("");
CString strTemp;
int iPosRN[2] = {-1,-1}; //数组的第一个表示找到/r的位置,第二个表示找到/n的位置
int iFrontPos = 0; //表示找到/r,/n的位置中的较前的一个
while( 0 != strDesc.GetLength() )
{
iPosRN[0] = strDesc.Find("/r");
iPosRN[1]= strDesc.Find("/n");
//如果没有相关的回车或是换行符了
if( (-1 == iPosRN[0] ) && (-1 == iPosRN[1] ) )
{
break; //没有相关的回车或是换行符了
}
//取小的且不是-1的那个
if( (iPosRN[0] < iPosRN[1]) && (-1 != iPosRN[0] ))
{
iFrontPos = 0;
}
else
{
iFrontPos = 1;
}
strTemp = strDesc.Left(iPosRN[iFrontPos]);
if( 0 != strTemp.GetLength() ) //这样的处理可以删除多个空行
{
strResult += strTemp;
strResult +=CString("/r/n");
}
//如果存在连续的/n/r/n,处理也是正常的
if( iPosRN[1-iFrontPos] == (iPosRN[iFrontPos]+1) )
{
strDesc = strDesc.Right(strDesc.GetLength() - iPosRN[1-iFrontPos]-1);
}
else
{
strDesc = strDesc.Right(strDesc.GetLength() - iPosRN[iFrontPos]-1);
}
}
strResult += strDesc;
strDesc = strResult;
}
本文介绍了一个用于处理文本中/r和/n字符,确保正确换行显示的C++函数。该函数通过查找并替换单个的/r或/n为/r/n来实现多行文本的正确展示。

被折叠的 条评论
为什么被折叠?



