合肥网站建设 微笑互联,网站群集约化建设通知,西安做网站排名,微信公众号可以做网站嘛今天为了通过串口往单片机里写一个16进制字符去控制单片机的adc的起停#xff0c;结果糊涂到把\x01误写成\0x01#xff0c;怎么也得不到意想的结果#xff0c;程序员有时候会犯低级错误#xff0c;有时候怎么也跳不出去#xff0c;这时候通过写一个测试程序也许就能发现端…今天为了通过串口往单片机里写一个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);