Freigeben über


CSimpleStringT::GetBufferSetLength

Gibt einen Zeiger auf internen Zeichenpuffer für das CSimpleStringT-Objekt zurück und bei Bedarf überschreitet oder vergrößert die Länge ab, um die Länge genau entsprechen, die in nLength angegeben wird.

PXSTR GetBufferSetLength(
   int nLength
);

Parameter

  • nLength
    Die genaue Größe des CSimpleStringT Zeichenpuffers in Zeichen.

Rückgabewert

Ein Zeiger auf PXSTR (auf null endende) Zeichenpuffer des Objekts.

Hinweise

Rufen Sie diese Methode auf, um die angegebene Länge des internen Puffers CSimpleStringT des Objekts abzurufen.Der zurückgegebene PXSTR Zeiger ist nicht const und können daher direkte Änderung von CSimpleStringT Inhalt.

Wenn Sie den Zeiger verwenden, der von GetBufferSetLength zurückgegeben wird, um den Zeichenfolgeninhalt zu ändern, rufen ReleaseBuffer, um des internen Zustands von CsimpleStringT zu aktualisieren, bevor andere CSimpleStringT-Methoden verwenden.

Die Adresse, die von GetBufferSetLength 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 erneut zugewiesen, 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, nicht fügen Sie das NULL an.Sie müssen die endgültige Zeichenfolgenlänge angeben, wenn Sie den Puffer freigeben, indem Sie ReleaseBuffer verwenden.Wenn Sie ein NULL anfügen, wenn Sie ReleaseBuffer aufrufen, übergeben Sie - 1 (Standardwert) für die Länge zu ReleaseBuffer und ReleaseBuffer führen strlen auf den Puffer aus, um seine Länge zu bestimmen.

Weitere Informationen zur Verweiszählung, finden Sie:

Beispiel

Das folgende Beispiel veranschaulicht die Verwendung von CSimpleStringT::GetBufferSetLength.

CSimpleString str(pMgr);
LPTSTR pstr = str.GetBufferSetLength(3);
pstr[0] = _T('C');
pstr[1] = _T('u');
pstr[2] = _T('p');

// No need for trailing zero or call to ReleaseBuffer()
// because GetBufferSetLength() set it for us.

str += _T(" soccer is best!");
ASSERT(_tcscmp(str, _T("Cup soccer is best!")) == 0);   

Anforderungen

Header: atlsimpstr.h

Siehe auch

Referenz

CSimpleStringT-Klasse

CSimpleStringT::GetBuffer

CSimpleStringT::ReleaseBuffer