Freigeben über


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

Siehe auch

Referenz

CSimpleStringT Class

CSimpleStringT::GetBufferSetLength

CSimpleStringT::ReleaseBuffer