CSimpleStringT::GetBuffer
Gibt einen Zeiger auf internen Zeichenpuffer für das CSimpleStringT-Objekt zurück.
PXSTR GetBuffer(
int nMinBufferLength
);
PXSTR GetBuffer();
Parameter
nMinBufferLength
Die Mindestanzahl von Zeichen, die der Zeichenpuffer enthalten kann. Dieser Wert enthält keine Leerzeichen für ein NULL-Zeichen.Wenn nMinBufferLength größer als die Länge des aktuellen Puffers ist, zerstört GetBuffer den aktuellen Puffer, ersetzt ihn durch einen Puffer der angeforderte Größe und setzt die Objektverweisanzahl auf null zurück. Wenn Sie zuvor LockBuffer auf diesem Puffer aufgerufen haben, gehen Sie die Puffersperre.
Rückgabewert
Ein Zeiger auf PXSTR (auf null endende) Zeichenpuffer des Objekts.
Hinweise
Rufen Sie diese Methode auf, um den Pufferinhalt des Objekts CSimpleStringT zurückzugeben. Zurückgegebene PXSTR ist keine Konstante und können daher direkte Änderung von CSimpleStringT Inhalt.
Wenn Sie den Zeiger verwenden, der von GetBuffer zurückgegeben wird, um den Zeichenfolgeninhalt zu ändern, müssen Sie ReleaseBuffer aufrufen, bevor andere CSimpleStringT-Membermethoden verwenden.
Die Adresse, die von GetBuffer zurückgegeben wird, ist möglicherweise nicht nach dem Aufruf von ReleaseBuffer gültig, da zusätzliche CSimpleStringT Vorgänge den CSimpleStringT Puffer bewirken können neu zugeordnet werden. Der Puffer wird nicht neu zugeordnet, wenn Sie nicht die Länge CSimpleStringT ändern.
Der Buffer wird automatisch freigegeben, wenn das CSimpleStringT-Objekt zerstört wird.
Wenn Sie die Zeichenfolgenlänge sich verfolgen, sollten Sie das NULL nicht anfügen. Sie müssen jedoch die endgültige Zeichenfolgenlänge angeben, wenn Sie den Puffer mit ReleaseBuffer freigeben. Wenn Sie ein NULL anfügen, sollten Sie - 1 (Standardwert) für die Länge übergeben. ReleaseBuffer bestimmt dann die Pufferlänge.
Wenn nicht genügend Arbeitsspeicher vorhanden ist, um die GetBuffer Anforderung wird, löst diese Methode ein CMemoryException*.
Beispiel
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();
Anforderungen
Header: atlsimpstr.h