GetBuffer和ReleaseBuffer是一套需要配合使用的函数, 与GetBufferSetLength相比, 优点是如果分配的空间大于实际保存的字符串(0结尾), ReleaseBuffer会把多余申请的空间释放, 归还给系统;
但使用时需要注意以下问题:

如果要保存的字符串为abc(0结尾), 则GetBuffer参数应至少为3;
如果要保存的内容不是以0结尾, 比如是读取文件数据, 则GetBuffer参数如果大于文件长度时, ReleaseBuffer参数一定要为文件长度(如果GetBuffer参数为文件长度的话不存在问题, ReleaseBuffer参数可以为默认-1)!

CString csStr;
LPTSTR lpsz = csStr.GetBuffer(100);
lpsz[0] = 'a';
lpsz[1] = 'b';
lpsz[2] = '\0';
csStr.ReleaseBuffer();
int nLength = csStr.GetLength();
/* n的值为2 */

GetBufferSetLength相对比较容易理解, 它申请一个指定长度的空间, 即使里面最终保存的字符串长度小于申请的空间长度, 也不会将多余空间释放.

CString csStr;
LPTSTR lpsz = csStr.GetBufferSetLength(100);
lpsz[0] = 'a';
lpsz[1] = 'b';
lpsz[2] = '\0';
int nLength = csStr.GetLength();
/* n的值还是为100 */

分析: GetBuffer, ReleaseBuffer, GetBufferSetLength相关推荐

  1. GetBuffer, ReleaseBuffer, GetBufferSetLength的用法

    GetBuffer和ReleaseBuffer是一套需要配合使用的函数, 与GetBufferSetLength相比, 优点是如果分配的空间大于实际保存的字符串(0结尾), ReleaseBuffer ...

  2. Getbuffer ReleaseBuffer Cstring

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

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

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

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

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

  5. MFC CString GetBuffer/ReleaseBuffer 的使用条件

    今天为了通过串口往单片机里写一个16进制字符去控制单片机的adc的起停,结果糊涂到把'\x01'误写成'\0x01',怎么也得不到意想的结果,程序员有时候会犯低级错误,有时候怎么也跳不出去,这时候通过 ...

  6. MFC CString GetBuffer ReleaseBuffer方法

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

  7. [MFC]对CString::GetBufferSetLength方法的探究,需要ReleaseBuffer,GetLength才正确!

    在使用CString的GetBufferSetLength方法时,遇到了一个问题,代码如下: CString path; ::GetCurrentDirectory(MAX_PATH, path.Ge ...

  8. BSTR 、LPCTSTR、CString附C语言串基本操作

    CString ,BSTR ,LPCTSTR之间关系和区别 CString是一个动态TCHAR数组,BSTR是一种专有格式的字符串(需要用系统提供的函数来操纵,LPCTSTR只是一个常量的TCHAR指 ...

  9. VC2010不能将参数从“CString”转换为“const char *”

    原文地址:http://fengqing888.blog.163.com/blog/static/330114162012016103558408/ 你在vs2010中默认字符集是UNICODE字符集 ...

最新文章

  1. 苹果App Icon的问题
  2. python数据库有什么特点_python进阶十——mysql初识
  3. 【PC工具】更新图片批量处理工具Image Tuner,绿色免安装工具软件
  4. iwrite提交不了作业_在云端,我们把花样作业pick起来!
  5. 最短路径(弗洛伊德算法)
  6. eclipse 代码提示后面的百分比是什么意思?
  7. 回文绝对求下联:亚冠决赛决冠亚
  8. qt-sdk-linux,在linux系统上安装qt-sdk步骤.doc
  9. 模糊算法 matlab,几种模糊控制算法的MATLAB仿真.pdf
  10. Could not find a version that satisfies the requirement pytz (from django)
  11. C语言及程序设计基础 课程主页
  12. 学习使用php实现公历农历转换的方法代码
  13. php 获取xlsx,PHP Excel Reader读取xlsx文件
  14. python爬虫基础教程:利用python抓取返利网商品信息
  15. Linux查看gzip文件原始大小,Linux 文件管理:Linux gzip 压缩
  16. 解决Windows 10控制面板里原本的索引选项变成Indexing Option Control Panel (32-bit)及空白图标的问题
  17. RabbitMQ的Queue详解;
  18. java学习总结(16.06.07)类的静态成员和非静态成员
  19. Drawio免费绘图工具
  20. 面向对象与面向过程的区别与联系

热门文章

  1. DAG三架马车之一NANO
  2. 【2019.5.31】学习·分享会·总结???
  3. java后端和js后端的区别_web前端与后端有什么区别?
  4. 基于android 10的国产手机,国产手机再次发力:骁龙855 Plus+安卓10.0系统!
  5. IOS开发问题索引(四)
  6. 计算机硬件技术基础(太原理工大学):第五章
  7. 移动端有时候触发不了touchend 使用event.preventDefault()后页面无法滚动
  8. Python数据库安装
  9. Mac系统下vue脚手架的安装与使用
  10. oracle创建表同时给值,在高并发、高负载的情况下,如何给表添加字段并设置DEFAULT值?...