CSimpleStringT::GetBuffer
Dahili karakter arabelleği için bir işaretçi döndürür CSimpleStringT nesnesi.
PXSTR GetBuffer(
int nMinBufferLength
);
PXSTR GetBuffer();
Parametreler
nMinBufferLength
En az sayıda karakter arabelleği tutabilir karakteri.Bu değer null Sonlandırıcı alanı içermez.nMinBufferLength Geçerli arabellek uzunluğundan daha büyük GetBuffer geçerli arabellek yok eder, istenen boyuttaki bir arabelleği ile yerini alır ve nesne başvurusu sayısı sıfır olarak sıfırlar.Daha önce aradığınız, LockBuffer bu arabellek üzerinde arabellek kilidi kaybedersiniz.
Dönüş Değeri
Bir PXSTR nesnenin (boşla sonlandırılmış) karakter arabelleği için işaretçi.
Notlar
Tampon içeriğini döndürmek için bu yöntemi çağırın CSimpleStringT nesnesi.Döndürülen PXSTR sabit değildir ve bu nedenle doğrudan değiştirilmesine izin verir CSimpleStringT içeriği.
Tarafından döndürülen işaretçi kullanırsanız, GetBuffer dize içeriğini değiştirmek için çağırmanız gerekir ReleaseBuffer diğer kullanmadan önce CSimpleStringT üye yöntemleri.
Tarafından döndürülen adres GetBuffer çağrısının geçerli olmayabilir ReleaseBuffer çünkü ek CSimpleStringT neden olabilecek işlemleri CSimpleStringT bırakılan için arabellek.Uzunluğunu değiştirmezseniz arabellek ayrılırken değil CSimpleStringT.
Tampon bellek otomatik olarak ne zaman serbest CSimpleStringT nesne bozulur.
Dize uzunluğu kendiniz izleyebilmek, sondaki boş karakter eklememeniz gerekir.Ancak, arabelleği serbest bıraktığınızda son dize uzunluğunu belirtmelisiniz ReleaseBuffer.Sondaki boş karakter ekleme, uzunluğu için (varsayılan) –1 göndermesi gerekir.ReleaseBufferDaha sonra arabellek uzunluğu belirler.
Karşılamak için yeterli bellek yok ise GetBuffer isteği, bu yöntem atan CMemoryException *.
Örnek
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();
Gereksinimler
Başlık: atlsimpstr.h