若要檢視英文版的文章,請選取 [原文] 核取方塊。您也可以將滑鼠指標移到文字上,即可在快顯視窗顯示英文原文。
譯文
原文

CSimpleStringT::GetBuffer

 

傳回指向 CSimpleStringT 物件內部緩衝區的字元。


      PXSTR GetBuffer(
   int nMinBufferLength
);
PXSTR GetBuffer();

nMinBufferLength

字元緩衝區可以容納的最小數目。這個值不包含 null 結束字元的空間。

如果 nMinBufferLength 大於目前緩衝區的長度, GetBuffer 終結目前緩衝區,以要求大小的緩衝區來取代,並重設物件參考計數為零。如果您先前已呼叫在這個緩衝區中的 LockBuffer ,將會失去緩衝區鎖定。

物件的 (以 null 終止) 字元緩衝區的 PXSTR 指標。

呼叫這個方法會傳回物件的 CSimpleStringT 緩衝區內容。傳回的 PXSTR 不是常數也不允許 CSimpleStringT 內容的直接修改。

如果您使用 GetBuffer 傳回的指標變更字串的內容,您必須呼叫 ReleaseBuffer ,在您使用其他任何 CSimpleStringT 成員方法。

因為其他 CSimpleStringT 作業可能會造成 CSimpleStringT 緩衝區重新配置, GetBuffer 傳回的位址可能不是在呼叫之後 ReleaseBuffer如果沒有變更, CSimpleStringT緩衝區的長度不會重新配置。

會在終結時,緩衝區會記憶體就會自動釋放 CSimpleStringT 物件。

如果您正在錄製字串長度,就不應該附加結束的 null 字元。不過,在中,當您發行 ReleaseBuffer的緩衝區時,您必須指定最後的字串長度。如果您附加至結束的 null 字元,則應該傳遞– 1 (預設值) 的長度。 ReleaseBuffer 再判斷緩衝區的長度。

如果有符合 GetBuffer 需要的記憶體不足,這個方法會擲回 CMemoryException*。

CSimpleString s(_T("abcd"), pMgr);

LPTSTR pBuffer = s.GetBuffer(10);
int    sizeOfBuffer = s.GetAllocLength();

// Directly access CSimpleString buffer
_tcscpy_s(pBuffer, sizeOfBuffer, _T("Hello")); 
ASSERT(_tcscmp(s, _T("Hello")) == 0);

s.ReleaseBuffer();   

需求

標題: atlsimpstr.h

顯示: