很明显ReleaseBuffer的作用就是更新字符串的长度。 CString内,GetLength获取字符串长度并不是动态计算的,而是在赋值操作后计算并保存在一个int变量内的,当通过GetBuffer直接修改CString时,那个int变量并不可能自动更新,于是便有了ReleaseBuffer. 示例:下面的例子说明了如何用CString::GetBuffer和CString::ReleaseBuffer(最好逐...
只不过,这块内存是被引用在CString对象的内部而已,这是非常有效的一种用法,如果不直接用GetBuffer函数来申请的话,那么你必须用new操作符(或者malloc()函数)在CString的外部申请,然后再将申请的内存拷贝到CString对象中,显然这是一个非常冗余的操作,会使你函数的效率大大下降。
将LPTSTR p = s.GetBuffer( 2 ); 修改为:LPTSTR p = s.GetBuffer( 10 ); 测试结果同1。 测试3: 在测试二的LPTSTR p = s.GetBuffer( 10 );后添加 p[5]='f'; 测试结果同1。 测试4: 将测试三的p[5]='f';修改为p[4]='e'; 测试结果4: (1)before GetBuffer: CString s.length=4 CString ...
userInfo.shareable = m_checkReuseable.GetCheck();strcpy( userInfo.Groupname, m_strGroupName.GetBuffer(0) );strcpy( userInfo.memo, m_strDescribe.GetBuffer(0) );strcpy( userInfo.name, m_strName.GetBuffer(0) );strcpy( userInfo.passWord, m_strPsw.GetBuffer(0) );//保存用户intbRet = SaveuserI...
使用CString 对象的 GetBuffer 方法 如果你需要修改 CString 中的内容,它有一个特殊的方法可以使用,那就是 GetBuffer,它的作用是返回一个可写的缓冲指针。 如果你只是打算修改字符或者截短字符串,你完全可以这样做: CString s(_T(\"File.ext\")); LPTSTR p = s.GetBuffer();...
在调用ReleaseBuffer之后,由GetBuffer返回的地址也许就无效了,因为其它的CString操作可能会导致CString缓冲区被重新分配。 如果你没有改变此CString的 MFC string char cstring 类型转换 ,z_cCurTime,z_len,NULL,NULL ); 1 前言 今天在网上看论坛,发现大家对CString与Char *互转各说一词,其实我发现提问者所说的情况...
CString::GetBufferSetLength LPTSTR GetBufferSetLength( int nNewLength ); throw( CMemoryException ); 返回值: 返回一个指向对象的(以空字符结尾的)字符缓冲区的LPTSTR指针。 参数: nNewLength此CString字符缓冲区的以字符数表示的精确容量。 说明: 此成员函数返回一个指向CString对象的内部字符缓冲区的指针,如果需...
ReleaseBuffer一般用在GetBuffer,因为在调用了GetBuffer后变量本身会给自己上锁,于是所有能改变自身值的函数都不能用(如果Left,Mid),要用ReleaseBuffer解锁 一.函数原型 CString::GetBuffer LPTSTR GetBuffer( int nMinBufLength ); throw( CMemoryException ); ...
CString::GetBuffer LPTSTRGetBuffer(intnMinBufLength**);** throw(CMemoryException); Return Value AnLPTSTRpointer to the object’s (null-terminated) character buffer. Parameters nMinBufLength The minimum size of the character buffer in characters. This value does not include space for a null ...
GetBuffer()主要作用是将字符串的缓冲区长度锁定,releaseBuffer则是解除锁定,使得CString对象在以后的代码中继续可以实现长度自适应增长的功能。 是否需要在GetBufer后面调用ReleaseBuffer(),是根据你的后面的程序是否需要继续使用该字符串变量,并且是否动态改变其长度而定的。不是什么好地编程习惯,之类的原因。