mfc中的CEdit文本检索

mfc中的CEdit文本检索,mfc,cstring,cedit,Mfc,Cstring,Cedit,我正在使用具有Multiline属性的CEdit。我的目标是检索单独的行并将其放置在我的CStringArray中 在使用GetLine检索该行时,我必须知道该行的字符串长度 如何得到这个 我尝试了函数GetLineLength(),但它将返回整行的大小,而不是指定的文本 我粘贴了迄今为止已实现的代码: CEdit m_strMnemonicCode; CStringArray strMnemonicArray; LPTSTR temp = new TCHAR[50];; int nLineC

我正在使用具有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);
}
ceditm_strmeniccode;
CStringArray-strmnemonic阵列;
LPTSTR温度=新TCHAR[50];;
int nLineCount=m_strMnemonicCode.GetLineCount();
对于(int-ni=0;ni
但是你需要知道整行的长度,不是吗?
我不会将缓冲区定义为一个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);
}
int lc=m_Edit.GetLineCount();
斯特林;
cstringarr;
对于(int i=0;i

也许您忘记了将缓冲区长度添加到
ReleaseBuffer()

,但您需要知道整行的长度,不是吗?
我不会将缓冲区定义为一个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);
}
int lc=m_Edit.GetLineCount();
斯特林;
cstringarr;
对于(int i=0;i

也许您忘记了将缓冲区长度添加到
ReleaseBuffer()

以您的方式,CString包含该行的限制大小,因此它将像指定的文本+垃圾值一样在末尾打印。例如:在第一行文本中:karthik,那么CString包含karthik;kajsdf;aksjdfaskjdfas;kdjfsalkj;这就是输出的方式。这种情况只适用于多行样式。我刚刚编辑了我的答案,添加了一些适合我的代码。在您的方式中,CString包含该行的限制大小,因此它将像指定的文本+垃圾值一样打印。例如:在第一行文本中:karthik,那么CString包含karthik;kajsdf;aksjdfaskjdfas;kdjfsalkj;这就是输出的方式。这种情况只适用于多行样式。我刚刚编辑了我的答案,添加了一些适合我的代码