If you use the pointer returned byGetBufferto change the string contents, you must callReleaseBufferbefore using any otherCStringmember functions. 二.函数作用及使用范围 对一个CString变量,你可以使用的唯一合法转换符是LPCTSTR,直接转换成非常量指针(LPTSTR-[const] char*)是错误的。正确的得到一个指向缓冲区...
很显然,str1工作不正常是在对通过GetBuffer返回的指针进行一个字符串拷贝之后的。 再看MSDN上的关于这个operation的说明,可以看到里面有这么一段话: If you use the pointer returned by GetBuffer to change the string contents, you must call ReleaseBuffer before using any other CString member functions. 原来...
GetBuffer和GetString目前(VS2022下测试)我发现不管在Unicode还是多字节环境下都只能返回TCHAR*了,没法返回char*了。 但是我又发现了一种,兼容Unicode和多字节的转换方式: CW2A。 CString mfcstr ="456487894564啊士大夫十大"; str =CW2A(mfcstr); 那么MFC的字符串转换小结就是: str = CW2A(mfcstr); // CString...
通过设置断点,我们来运行并跟踪这段代码可以看出,当运行到三处时,str1的值是”This is the string 1”,并且nOldLen的值是20。当运行到5处时,发现,str1的值变成了”modified”。也就是说,对GetBuffer返回的字符串指针,我们将它做为参数传递给strcpy,试图来修改这个字符串指针指向的地址,结果是修改成功,并且CStr...
通过设置断点,我们来运行并跟踪这段代码可以看出,当运行到三处时,str1的值是”This is the string 1”,并且nOldLen的值是20。当运行到5处时,发现,str1的值变成了”modified”。也就是说,对GetBuffer返回的字符串指针,我们将它做为参数传递给strcpy,试图来修改这个字符串指针指向的地址,结果是修改成功,并且CStr...
4.2、GetBuffer: 比起GetString或者operator PCXSTR,GetBuffer函数就有趣多了。 CSimpleStringT::GetBuffer 这里我们注意到,返回的是PXSTR而不是PXCSTR,也就是说,GetBuffer 返回的字符串,是不带 const 属性的,我们可以进行写操作——那么,为了不影响其他共享的字符串,这里触发了CopyOnWrite机制!——当然,如果pData->Is...
getbuffer是为了让你使用CString类中,保存字符串缓冲区的那块指针. 至于releasebuffer,在MSDN中有这样一句话. If you use the pointer returned by GetBuffer to change the string contents, you must call ReleaseBuffer before using any other CString member functions. ...
用的是strcpy调用getBuffer来给CString的指针赋值,三个指针指向同一个字符串常量。CString str=""; //如果工bai程设置使用多字节字符集,du是正确的;zhi使用unicode字符集,则是错误的 CString str=''; //错误 CString str=NULL;//错误 CString str; str.Empty(); //正确,但daoEmpty调用多余 C...
8、rmatID 字符串标识符例子 CString str;Str.Format(“%d”,13); 此时Str为13CString:GetAtTCHAR GetAt( int nIndex ) const;返回标号为nIndex的字符,你可以把字符串理解为一个数组,GetAt类似于.注意nIndex的范围,如果不合适会有调试错误。CString:GetBufferLPTSTR GetBuffer( int nMinBufLength );返回值一...