CSimpleStringT::GetBuffer
返回指向 CSimpleStringT 对象的内部字符缓冲区。
PXSTR GetBuffer(
int nMinBufferLength
);
PXSTR GetBuffer();
参数
nMinBufferLength
字符缓冲区可以容纳字符的最小位数。 此值不包括null结束符的空格。如果 nMinBufferLength 大于当缓冲区的长度,GetBuffer 销毁当前缓冲区,使用该请求大小的缓冲区替换它,并重置对象引用计数为零。 如果您以前称为此缓冲区中 LockBuffer,就会失去缓冲区锁。
返回值
对对象(Null终止)字符缓冲区的一 PXSTR 指针。
备注
调用此方法返回 CSimpleStringT 对象的缓冲区内容。 返回的 PXSTR 不是常数并不允许 CSimpleStringT 内容的直接修改。
如果使用 GetBuffer 返回的指针更改字符串内容,必须调用 ReleaseBuffer,在使用任何其他 CSimpleStringT 成员方法。
因为附加 CSimpleStringT 操作可能导致 CSimpleStringT 缓冲区重新分配,GetBuffer 返回的地址可能无效的中,调用 ReleaseBuffer 之后。 如果不更改 CSimpleStringT,的长度缓冲区不重新分配。
当销毁时,内存缓冲区自动释放 CSimpleStringT 对象。
如果正在录制字符串长度,您不应追加终止null字符)。 但是,那么,当您随 ReleaseBuffer时,的缓冲区必须指定最终字符串长度。 如果您追加一个null字符),则应通过– 1 (默认值)该长度的数组。 ReleaseBuffer 然后确定缓冲区长度。
如果具有足够 GetBuffer 请求的内存不足,此方法将引发CMemoryException*。
示例
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();
要求
标头: atlsimpstr.h