mfc中的CEdit文本检索

发布于 2024-11-13 09:15:56 字数 645 浏览 2 评论 0原文

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

I am using CEdit with the property of Multiline.My objective is to retrieve the individual line and place it in my CStringArray.

While retrieving the line using GetLine , I have to know the string length of that line.

How to get this?

I tried the function GetLineLength() but that will return the size of the entire line rather than the specified text.

I pasted the code that i have implemented so far:

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);
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

喜你已久 2024-11-20 09:15:56

但你需要知道整条线的长度,不是吗?
我不会将缓冲区定义为 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() 中?

But you need to know the length of the whole line, don't you?
I would not define the buffer as an array of TCHARs, but as a CString, then do GetBuffer() on it.

Check the example in CEdit::GetLineCount

It seems to do more or less what you need.

Edit
I've just written the following test, and it works perfectly for me:

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);
}

Maybe you are forgetting to add the buffer length to ReleaseBuffer()?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文