CString GetBuffer()详解

来源:互联网 发布:淘宝商品详情怎么做 编辑:程序博客网 时间:2024/05/29 19:17

GetBuffer()主要作用是将字符串的缓冲区长度锁定,releaseBuffer则是解除锁定,使得CString对象在以后的代码中继续可以实现长度自适应增长的功能。

是否需要在GetBufer后面调用ReleaseBuffer(),是根据你的后面的程序是否需要继续使用该字符串变量,并且是否动态改变其长度而定的。不是什么好地编程习惯,之类的原因。
如果你GetBuffer以后程序自函数就退出,局部变量都不存在了,调用不掉用ReleaseBuffer没什么意义了。

但如果你出现例如下面的代码
CString   m_strA;
m_strA=_T( "123456 ");
m_strA.GetBuffer(6);
m_strA+=_T( "789 ");//此时就会出错了,因为需要动态加长字符串长度

 

解决办法:

CString   s1;
GetCurrentDirectory(_MAX_DIR,s1.GetBuffer(_MAX_DIR));

CString   s2;
s2.Format( "s%s ",s1);

 

或者:

要相加之前加
s1.ReleaseBuffer();