CHString::GetBufferSetLength 方法 (chstring.h)
[CHString 类是 WMI 提供程序框架的一部分,现在视为处于最终状态,对于影响这些库的非安全性相关问题,将不会提供进一步的开发、增强或更新。 所有新开发均应使用 MI API。]
GetBufferSetLength 方法返回指向 CHString 对象的内部字符缓冲区的指针,如有必要,截断或增加其长度以完全匹配 nNewLength 中指定的长度。
语法
LPWSTR throw(CHeap_Exception) GetBufferSetLength(
int nNewLength
);
参数
nNewLength
CHString 字符缓冲区的确切大小,以字符为单位。
返回值
返回一个 LPWSTR 指针,该指针指向对象的 (以 NULL 结尾) 字符缓冲区。
注解
返回的 LPWSTR 指针(不是 const)允许直接修改 CHString 内容。
如果使用 GetBuffer 返回的指针更改字符串内容,则必须在使用任何其他 CHString 方法之前调用 ReleaseBuffer。
调用 ReleaseBuffer 后, GetBufferSetLength 返回的地址可能无效,因为其他 CHString 操作可能会导致 重新分配 CHString 缓冲区。 如果不更改 CHString 字符串的长度,则不会重新分配缓冲区。 销毁 CHString 对象时,将自动释放缓冲区内存。
请注意,如果自行跟踪字符串长度,则不应追加终止 NULL 字符。 但是,在使用 ReleaseBuffer 释放缓冲区时,必须指定最终字符串长度。 如果在调用 ReleaseBuffer 时追加终止 NULL 字符,则应传递 –1 (长度的默认) 。 ReleaseBuffer 方法调用缓冲区上的 wcslen 函数以确定其长度。
示例
下面的代码示例演示如何使用 CHString::GetBufferSetLength。
CHString str;
LPWSTR pstr = str.GetBufferSetLength(3);
pstr[0] = 'I';
pstr[1] = 'c';
pstr[2] = 'e';
// No need for trailing zero or call to ReleaseBuffer()
// because GetBufferSetLength() set it for you.
str += " hockey is best!";
printf( "str: %S\n", (LPCWSTR)str );
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows Vista |
最低受支持的服务器 | Windows Server 2008 |
目标平台 | Windows |
标头 | chstring.h (包括 FwCommon.h) |
Library | FrameDyn.lib |
DLL | FrameDynOS.dll;FrameDyn.dll |