2011-06-02 61 views
1

我使用CEdit屬性Multiline.My的目標是檢索個別行並將其放在我的CStringArray中。CEdit在mfc中的文本檢索

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

回答

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

+0

以您的方式,CString包含該行的限制大小,因此它將在最後打印爲指定的文本+垃圾值。例如:在第一行文本:karthik然後CString包含karthik; kajsdf; aksjdfaskjdfas; kdjfsalkj;這就是輸出的結果。這種情況只發生在多行風格上。 – karthik 2011-06-02 06:13:10

+0

我剛剛編輯了我的答案,添加了一些適用於我的代碼 – MikMik 2011-06-02 06:34:57

+0

雅其工作良好..感謝MikMik。 – karthik 2011-06-02 06:58:59