今天为了通过串口往单片机里写一个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);

转载于:https://www.cnblogs.com/ransn/p/8079138.html

MFC CString GetBuffer/ReleaseBuffer 的使用条件相关推荐

  1. MFC CString GetBuffer ReleaseBuffer方法

    一.函数原型 CString::GetBuffer LPTSTR GetBuffer( int nMinBufLength ); throw( CMemoryException ); Return V ...

  2. MFC CString的GetBuffer()/ReleaseBuffer()

    CString GetBuffer()/ReleaseBuffer()两个方法的使用 LPTSTR GetBuffer(int nMinBufLength); void ReleaseBuffer(i ...

  3. CString 中Releasebuffer GetBuffer 相关实现原理

    一.函数原型 CString::GetBuffer LPTSTR GetBuffer( int nMinBufLength ); throw( CMemoryException ); Return V ...

  4. CString:Getbuffer和Releasebuffer的作用

    首先看MSDN中的解释: CString::GetBuffer  LPTSTR GetBuffer( int nMinBufLength );    throw( CMemoryException ) ...

  5. 精解CString类的GetBuffer,ReleaseBuffer 函数(VC++)

    CString的GetBuffer用法 一.函数原型 CString::GetBuffer LPTSTR GetBuffer( int nMinBufLength ); throw( CMemoryE ...

  6. Getbuffer ReleaseBuffer Cstring

    getbuffer是为了让你使用CString类中,保存字符串缓冲区的那块指针.     至于releasebuffer,在MSDN中有这样一句话.     If   you   use   the ...

  7. Cstring GetBuffer 和 ReleaseBuffer

    GetBuffer()主要作用是将字符串的缓冲区长度锁定,releaseBuffer则是解除锁定,使得CString对象在以后的代码中继续可以实现长度自适应增长的功能. CString ::GetBu ...

  8. CString GetBuffer() GetString()

    今天遇到了个棘手的问题, 弄了半天才搞定,在此记录下. 问题描述: MBCS工程中一个函数: void fun(CString& str1){     char *pstr = str1.Ge ...

  9. CString::GetBuffer函数作用

    CString::GetBuffer  LPTSTR GetBuffer( int nMinBufLength ); throw( CMemoryException ); 对一个CString变量,你 ...

最新文章

  1. tmux系统剪切板_实践中的tmux:与系统剪贴板集成
  2. JAVA语言基础-面向对象(集合框架02List、泛型)
  3. pandas删除dataframe中行内容全是0的数据行(remove rows with all zeros in dataframe)
  4. android 开发使用adb操作sqlite
  5. ajax请求的五个步骤_监控整个页面,非AJAX,需要通知
  6. hadoot配置环境变量win_Windows 下Hadoop的环境变量配置
  7. redis学习(四)
  8. 零基础学java web开发pdf_新手学Java Web开发.pdf
  9. 《孙子兵法》【作战第二】
  10. 制作cab文件(Windows自带的makecab)
  11. 月入1万,在北上广深能过什么样的生活?
  12. 建立windows2003 域名服务器
  13. 在MOSS2007中使用网页获取部件
  14. bc547可以用8050代换吗_怀孕可以用婴儿护肤品吗?
  15. php怎么判断未定义索引数组,PHP数组查找中的未定义索引
  16. 汇川IS620F PN博途使用FB284<111报文>进行基本定位,及GSD/使用说明下载<替换V90>
  17. PDF区域文本提取工具
  18. 网络模块封装-axio
  19. amd支持服务器内存,AMD专用内存为什么只能在AMD平台使用?与普通内存有什么区别?...
  20. pyspark案例系列11-ALS推荐算法

热门文章

  1. 论文阅读:A Semantic-based Method for Unsupervised Commonsense Question Answering
  2. 【C语言】C语言实现的无页面扫雷游戏 2.0
  3. Linux xshell通过ssh连接Linux系统
  4. linux下mkdirs方法乱码,linux 解压zip中文乱码问题
  5. plsql操作oracle数据库删除重复数据
  6. 阿里巴巴开发手册整理
  7. JAVA计算机毕业设计校园绿化管理系统Mybatis+源码+数据库+lw文档+系统+调试部署
  8. 5.5 super关键字
  9. 关于DBN fine-tunes使用BP多于up-down算法的一点看法
  10. java数组顺序_Java – 按时间排序数组