Compartir a través de


CSimpleStringT::GetBuffer

Devuelve un puntero al búfer interno de carácter para el objeto de CSimpleStringT .

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

Parámetros

  • nMinBufferLength
    El número de caracteres mínimo que el búfer del carácter puede contener. Este valor no incluye el espacio para un carácter null final.

    Si nMinBufferLength es mayor que la longitud del búfer actual, GetBuffer destruye el búfer actual, reemplácela con un búfer de tamaño solicitado, y restablece el recuento de referencias de objeto a cero. Si se ha llamado previamente LockBuffer en este búfer, pierde el bloqueo del búfer.

Valor devuelto

Un puntero de PXSTR en el búfer (terminado en null) de caracteres del objeto.

Comentarios

Llame a este método para devolver el contenido del búfer del objeto de CSimpleStringT . PXSTR devuelto no es una constante y por consiguiente no permite la modificación directa del contenido de CSimpleStringT .

Si utiliza el puntero devuelto por GetBuffer para cambiar el contenido de la cadena, se debe llamar a ReleaseBuffer antes de usar cualquier otro método de miembro de CSimpleStringT .

La dirección devuelta por GetBuffer puede no ser válida después de la llamada a ReleaseBuffer porque las operaciones adicionales de CSimpleStringT pueden hacer que el búfer de CSimpleStringT que se reasignara. El búfer no se reasigna si no cambia la longitud de CSimpleStringT.

Memoria de búfer automáticamente se libera cuando se destruye el objeto de CSimpleStringT .

Si no realiza un seguimiento de la longitud de la cadena personalmente, no debe anexar el carácter null de terminación. Sin embargo, debe especificar la longitud final de la cadena cuando suelte el búfer con ReleaseBuffer. Si anexa un carácter null de terminación, debe pasar – 1 (valor predeterminado) para la longitud. ReleaseBuffer a determina la longitud del búfer.

Si hay memoria suficiente para satisfacer la solicitud de GetBuffer , los tiros de este método un CMemoryException*.

Ejemplo

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();   

Requisitos

encabezado: atlsimpstr.h

Vea también

Referencia

CSimpleStringT Class

CSimpleStringT::GetBufferSetLength

CSimpleStringT::ReleaseBuffer