CSimpleStringT::GetBufferSetLength
返回指向 CSimpleStringT 对象的内部字符缓冲区,如果需要,截断或其其长度的完全匹配。nLength指定的长度。
PXSTR GetBufferSetLength(
int nLength
);
参数
- nLength
CSimpleStringT 字符缓冲区的确切大小在字符的。
返回值
对对象(Null终止)字符缓冲区的一 PXSTR 指针。
备注
调用此方法检索 CSimpleStringT 对象的内部缓冲区中的指定长度。 返回的 PXSTR 指针不是 const 因此不允许 CSimpleStringT 内容的直接修改。
如果使用 GetBufferSetLength 返回的指针更改字符串内容,请调用 ReleaseBuffer 更新 CsimpleStringT内部状态,在使用任何其他 CSimpleStringT 方法。
因为附加 CSimpleStringT 操作可能导致 CSimpleStringT 缓冲区重新分配,GetBufferSetLength 返回的地址可能无效的中,调用 ReleaseBuffer 之后。 缓冲区,如果不更改 CSimpleStringT,的长度不重新分配。
当销毁时,内存缓冲区自动释放 CSimpleStringT 对象。
如果正在录制字符串长度,不要追加终止null字符)。 使用 ReleaseBuffer时,那么,当您发布缓冲区必须指定最终字符串长度。 如果您追加一个null字符),调用 ReleaseBuffer,通过– 1 (默认值)到 ReleaseBuffer长度的和 ReleaseBuffer 将强制对缓冲区的 strlen 确定其长度。
有关的更多信息引用计数,请参见以下文章:
在 Windows SDK的托管对象生存期通过引用计数。
在 Windows SDK的实现引用计数。
在 Windows SDK的托管规则集引用计数。
示例
下面的示例说明 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);
要求
标头: atlsimpstr.h