我正在使用具有Multiline属性的CEdit。我的目标是检索单独的行并将其放在我的CStringArray中。
在使用GetLine检索行时,我必须知道该行的字符串长度。
如何获得这个?
我尝试了函数GetLineLength(),但它将返回整行的大小而不是指定的文本。
我粘贴了目前已执行的代码:
CEdit m_strMnemonicCode;
CStringArray strMnemonicArray;
LPTSTR temp = new TCHAR[50];;
int nLineCount = m_strMnemonicCode.GetLineCount();
for(int ni = 0 ; ni < nLineCount ; ni++)
{
int len = m_strMnemonicCode.LineLength(m_strMnemonicCode.LineIndex(ni));
//m_strMnemonicCode.GetLine(ni, strText.GetBuffer(len), len);
m_strMnemonicCode.GetLine( ni , temp );
strMnemonicArray.Add(strText);
}
答案 0 :(得分:1)
但你需要知道整条线的长度,不是吗?
我不会将缓冲区定义为TCHAR数组,但作为CString,然后对其执行GetBuffer()
。
似乎或多或少地做了你需要的东西。
修改强>
我刚刚编写了以下测试,它对我来说非常适合:
int lc = m_Edit.GetLineCount();
CString strLine;
CStringArray arr;
for (int i = 0; i < lc ; i++)
{
int len = m_Edit.LineLength(m_Edit.LineIndex(i));
m_Edit.GetLine(i, strLine.GetBuffer(len), len);
strLine.ReleaseBuffer(len);
arr.Add(strLine);
}
也许您忘记将缓冲区长度添加到ReleaseBuffer()
?