最近在处理MFC程序时,发现了这样一个问题:CEdit获得每行字符串时会出现乱码的现象,试了多次还是无法解决。因此只能获取全部字符串,再寻找\r\n,进行分段操作
void SubStr(CStringList& res, CString csText) {
int idx = csText.Find(_T("\r\n"));
if (idx == -1)
{
if(csText != _T(""))
res.AddTail(csText);
return;
}
CString subStr = csText.Left(idx);
int len = csText.GetLength();
res.AddTail(subStr);
SubStr(res, csText.Right(len-idx-2));
}
于是利用递归简单写了一个函数,其中有几点需要注意的:
1.换行符\r\n在CString中算两个长度,
2.CString的Find函数找不到是返回-1
3.CString的Left和Right函数都是表示截取的长度,且执行后不改变自身内容,只是返回一个子字符串。