ReleaseBuffer函数是用来告诉CString对象,你的GetBuffer所引用的内存已经使用完毕,现在必须对它进行封口,否则 CString将不会知道它现在所包含的字符串的长度,所以在使用完GetBuffer之后,必须立即调用ReleaseBuffer函数重置 CString的内部属性,其实也就是头部信息。 补充一下: GetBuffer说白了就两个功能: 1:就是将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 ...
也就是说,对GetBuffer返回的字符串指针,我们将它做为参数传递给strcpy,试图来修改这个字符串指针指向的地址,结果是修改成功,并且CString对象str1的值也响应的变成了” modified”。但是,我们接着再调用str1.GetLength()时却意外的发现其返回值仍然是20,但是实际上此时str1中的字符串已经变成了” modified”,也就是说...
CStrin g的Get Buffe r用法,GetBuf fer本质,GetBuf fer常见问题解决 方法 char *GetBuf fer(n)当n大于0时,是为CString变量分配一个长度为n的字节数组,返回值是这个数组的地址 当n等于0时,返回CString变量本身拥有的...
1、先看一个简单的例子 "This is a test ")); LPTSTR p = s.GetBuffer(); if(p != NULL) *p = _T('\0'); s.ReleaseBuffer(); 1. 2. 3. 4. 2、什么意思呢,进行如下测试: 能不能在ReleaseBuffer()之前通过字符串赋值放大字符串缓冲,我是以vc2010重新测试得出的结论,在其他开发环境未测试。
1.GetBuffer函数说明 这个函数是为一个CString对象重新获取其内部字符缓冲区的指针,返回的LPTSTR为非const的,从而允许直接修改CString中的内容。 如果nMinBufLength(最小占用长度) 比当前buffer长度大,那么就调用GetBuffer函数去释放当前的Buffer,用一个被请求的大小去覆盖这个buffer并且重新设定计数器为0,如果在这之前你...
1. GetBuffer 很多错误用法中最典型的一个就是CString:: GetBuffer ()了.查了MSDN,里面对这个operation的描述是: Returns a pointer to the internal character buffer for the CString object. The returned LPTSTR is not const and thus allows direct modification of CString contents。 这段很清楚的说明,对于...
1.GetBuffer函数说明 这个函数是为一个CString对象重新获取其内部字符缓冲区的指针,返回的LPTSTR为非const的,从而允许直接修改CString中的内容。 如果nMinBufLength(最小占用长度) 比当前buffer长度大,那么就调用GetBuffer函数去释放当前的Buffer,用一个被请求的大小去覆盖这个buffer并且重新设定计数器为0,如果在这之前你...
file.Read(szContent.GetBuffer(nFileLength),nFileLength); szContent.ReleaseBuffer(); //取得文件內容放在szContent中,我们之后可以对其操作 } 三.测试 以下就CString::GetBuffer,做简单测试: 测试1: // example for CString::GetBuffer #include <stdio.h> #include <afx.h> void main(void) { CString s(...
GetBuffer说白了就两个功能: 1:就是将CString里面的内存交到外部一个来处理,外部可以直接修改它的内容。 2:重新修改CString的内存大小,这个数值不包含null结尾符。 另一个典型的用法:就是将CString里面的内容变为int或long型,需要先获取里面的内存指针。这样就可以先GetBuffer(内存大小)方便直接转换。