MFC CString GetBuffer/ReleaseBuffer 的使用条件
2017-12-21 11:03
453 查看
今天为了通过串口往单片机里写一个16进制字符去控制单片机的adc的起停,结果糊涂到把'\x01'误写成'\0x01',怎么也得不到意想的结果,程序员有时候会犯低级错误,有时候怎么也跳不出去,这时候通过写一个测试程序也许就能发现端倪。
下面说说正题。
// get pointer to modifiable buffer at least as long as nMinBufLength
LPTSTR GetBuffer(int nMinBufLength);
// release buffer, setting length to nNewLength (or to first nul if -1)
void ReleaseBuffer(int nNewLength = -1);
用mfc来开发很多会遇到cstring类,对上面的两个函数,有的人很久都没有搞明白是怎么回事,看上面的英文解释。GetBuffer通常是我们希望用到cstring类的字符串的指针,通常传0,如果对返回的指针指向的内容没有修改的话,就不需要调用ReleaseBuffer了,如果修改了这个指针指向的内容,就需要调用ReleaseBuffer了,通常传-1,即重新设置buffer长度为字符串的lengh
看看下面的代码,没有调用ReleaseBuffer的话长度变成16,但内容却是"abc",也就是说后面的拼接"123456789”没有起作用。这就印证了我上面所说的。
CString abc = _T("abcdefg");
LPTSTR str = abc.GetBuffer(0);
str[3] = '\0';
//abc.ReleaseBuffer();
abc += _T("123456789");
int length = abc.GetLength();
AfxMessageBox(abc);
相关文章推荐
- MFC CString GetBuffer ReleaseBuffer方法
- CString之GetBuffer/ReleaseBuffer的使用
- Getbuffer ReleaseBuffer Cstring
- CString::GetBuffer/ReleaseBuffer 技术内幕
- CString::GetBuffer ReleaseBuffer
- CString GetBuffer() 与releasebuffer()的使用
- [MFC]对CString::GetBufferSetLength 和CString::GetBuffer区别的研究
- CString 中的getbuffer ReleaseBuffer
- Getbuffer ReleaseBuffer Cstring
- Getbuffer ReleaseBuffer Cstring
- [MFC]对CString::GetBufferSetLength方法的探究
- [MFC]对CString::GetBufferSetLength方法的探究
- [MFC]对CString::GetBufferSetLength方法的探究
- [MFC]对CString::GetBufferSetLength方法的探究,需要ReleaseBuffer,GetLength才正确!
- CString中使用GetBufferSetLength和GetBuffer后执行releasebuffer的原理及必要性
- MFC中CString的Format方法使用
- CString::GetBuffer(int nMinBufLength);CString::ReleaseBuffer(int nNewLength)
- FB AS3 中,使用条件编译,实现debug、release的代码分离编译。
- 在非MFC中使用CString
- CString:Getbuffer和Releasebuffer的作用