在MFC 中,GetBuffer()和GetBuffer(0)实际上是等效的。两者都用于获取一个指向内部缓冲区的指针,该缓冲区存储了CString对象中包含的字符串数据。不同之处在于,GetBuffer()默认将为内部缓冲区分配足够的额外空间来容纳字符串数据及其终止 null 字符,而GetBuffer(0)则不会分配额外的空间,只返回当前字符串数据的指针。 ...
GetBuffer最好应该跟上ReleaseBuffer才对 cout<<(LPCTSTR)str<<endl;就足够了 GetBuffer(0)不是代表从0开始,而是代表缓冲区至少有0个字符(也就是不用动)比如 CString str = _T("123");LPTSTR p = str.GetBuffer(10); //扩充到10个字符 _tcscpy(str, _T("123456"));str.ReleaseBuffer(...
GetBuffer(0)不是代表从0开始,而是代表缓冲区至少有0个字符(也就是不用动)比如CString str = _T("123");LPTSTR p = str.GetBuffer(10); //扩充到10个字符_tcscpy(str, _T("123456"));str.ReleaseBuffer();GetBuffer返回的是一个可以写的内存地址,如果需要写的长度比现在的大就会出问题,所以指定一个参数...
它的参数的作用就是从CString类获得缓冲区的最小长度,相比0、1和str.GetBuffer(str.Getlength())没什么区别,因为所获得的缓冲区大小都是str.Getlength(),当参数大于str.Getlength()时,就有区别了,注意是最小长度。
CString::GetBuffer LPTSTR GetBuffer(int nMinBufLength );throw(CMemoryException );返回值:一个指向对象的(以空字符结尾的)字符缓冲区的LPTSTR指针。参数:nMinBufLength 字符缓冲区的以字符数表示的最小容量。这个值不包括一个结尾的空字符的空间。说明:此成员函数返回一个指向CString对象的内部字符...
1、CString对象内部的最后保留了'\0'字符,但是必须通过Getbuffer返回其指针后访问它才不会发生异常,如果用GetAt(GetLength())访问就会发生异常. 2、GetBuffer函数与GetbufferSetLength中的参数如果大于字符串的实际长度,则自动开辟新增加的长度。当调用ReleaseBuf函数后,则新增加的缓冲区如果未被存放内容那么多于的内存就...
略,不分配内存,指向原CString;当设定的长度大于原字符串本身的长度时就要重新分配(reallocate)一块比较大的空间出来。而调用第一个版本时,应如通过传入0来调用第二个版本一样。 是否需要在GetBufer后面调用ReleaseBuffer(),是根据你的后面的程序是否需要继续使用该字符串变量,并且是否动态改变其长度而定的。如果你Get...
方法 char *GetBuf fer(n)当n大于0时,是为CString变量分配一个长度为n的字节数组,返回值是这个数组的地址 当n等于0时,返回CString变量本身拥有的字符串数组的头 Releas eBuff er一般用在GetBuffer,因为在调用了GetB...
cstring的getbuffer用法getbuffer本质getbuffer常见问题解决方法chargetbuffern当n大于0时是为cstring变量分配一个长度为n的字节数组返回值是这个数组的地址当n等于0时返回cstring变量本身拥有的字符串数组的头releasebuffer一般用在getbuffer因为在调用了getbuffer后变量本身会给自己上锁于是所有能改变自身值的函数都不能用如果...