1

我正在使用具有 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);
}
4

1 回答 1

1

但是你需要知道整条线的长度,不是吗?
我不会将缓冲区定义为 TCHAR 数组,而是定义为 CString,然后GetBuffer()对其进行处理。

检查CEdit::GetLineCount中的示例

它似乎或多或少地做了你需要的。

编辑
我刚刚编写了以下测试,它非常适合我:

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()

于 2011-06-02T06:00:39.920 回答