现在的位置: 首页 > 综合 > 正文

GetBuffer和ReleaseBuffer

2013年10月08日 ⁄ 综合 ⁄ 共 650字 ⁄ 字号 评论关闭

LPTSTR GetBuffer( int nMinBufLength );

返回值为一块内存的指针。此函数相当于申请nMinBufLength大小的内存,不过,这段内存是被引用在CString对象的内部。当然也可以:newCString外部申请,然后再将申请的内存拷贝到CString对象汇中,用这种方法申请内存效率比较低。

         LPCTSTR返回的是const类型的指针,不可更改其内容。

void ReleaseBuffer( int nNewLength = -1 );

         nNewLength:字符串的长度,not counting a null terminator

注意事项:

Ø  这两个函数配套使用,万无一失。

Ø  GetBuffer之后ReleaseBuffer之前改变了字符串长度,则nMinBufLength的值必须不小于改变后的字符串长度,否则会报错。

Ø  如果使用GetBuffer返回的指针更改了字符串的内容,在调用ReleaseBuffer前不能调用任何别的CString member function。比如赋值什么的都不行。千万不要使用ReleaseBuffer(str.GetLength())

Ø  使用ReleaseBuffer时,若你确定字符串is null-terminated,参数使用默认值;若字符串is not null-terminated,参数由自己指定。你指定参数为多少,GetLength()就会返回多少。所以,一定要指定长度为字符串实际长度,否则字符串会输出乱码。

抱歉!评论已关闭.