CString::GetBuffer 
LPTSTR GetBuffer( int nMinBufLength );
throw( CMemoryException );
对一个CString变量,你可以使用的唯一合法转换符是LPCTSTR,直接转换成非常量指针(LPTSTR-[const] char*)是错误的。正确的得到一个指向缓冲区的非常量指针的方法是调用GetBuffer()方法。
GetBuffer()主要作用是将字符串的缓冲区长度锁定,releaseBuffer则是解除锁定,使得CString对象在以后的代码中继续可以实现长度自适应增长的功能。
CString ::GetBuffer有两个重载版本:
LPTSTR GetBuffer( );
LPTSTR GetBuffer(int nMinBufferLength);
在第二个版本中,当设定的长度小于原字符串长度时,nMinBufLength = nOldLen,该参数会被忽略,不分配内存,指向原CString;当设定的长度大于原字符串本身的长度时就要重新分配(reallocate)一块比较大的空间出来。而调用第一个版本时,和通过传入0来调用第二个版本一样。
是否需要在GetBufer后面调用ReleaseBuffer(),是根据你的后面的程序是否需要继续使用该字符串变量,并且是否动态改变其长度而定的。如果你GetBuffer以后程序自函数就退出,局部变量都不存在了,调用不调用ReleaseBuffer没什么意义了。
最典型的应用就是读取文件:
CFile file;
// FILE_NAME 为实现定义好的文件名称
if(file.Open(FILE_NAME,CFile::modeRead))
{
       CString szContent;
       int nFileLength = file.GetLength();
       file.Read(szContent.GetBuffer(nFileLength),nFileLength);
       szContent.ReleaseBuffer();
       // 取得文件內容放在szContent中,我们之后可以对其操作
}
还有的例子是使用sendmessage(WM_COPYDATA)进程间通信的时候,发送数据的地址最好getbuffer一下防止被未知线程修改数据
--------------------- 
作者:H-KING 
来源:CSDN 
原文:https://blog.csdn.net/liujiayu2/article/details/39968265 
版权声明:本文为博主原创文章,转载请附上博文链接!

CString::GetBuffer函数作用相关推荐

  1. CString的GetBuffer()主要作用是将字符串的缓冲区长度锁定,releaseBuffer则是解除锁定

    CString str; CStringArray array; GetPrivateProfileString(_T("策略参数"), _T("ROI1"), ...

  2. CString:Getbuffer和Releasebuffer的作用

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

  3. Cstring GetBuffer 和 ReleaseBuffer

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

  4. MFC CString GetBuffer ReleaseBuffer方法

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

  5. fullfile函数作用

    fullfile函数作用是利用文件各部分信息创建并合成完整文件名. 用法: fullfile('dir1', 'dir2', ..., 'filename') f = fullfile('dir1', ...

  6. 说明exit()函数作用的程序

    // algo1-4.cpp 说明exit()函数作用的程序 #include"c1.h" int a(int i) { if(i==1) { printf("退出程序的 ...

  7. API各函数作用简介

    API各函数作用简介 1.控件与消息函数 AdjustWindowRect 给定一种窗口样式,计算获得目标客户区矩形所需的窗口大小  AnyPopup 判断屏幕上是否存在任何弹出式窗口  Arrang ...

  8. 在标准IO库中,rewind函数作用?

    在标准IO库中,rewind函数作用? 将文件内部的位置指针重新指向一个流(数据流/文件)的开头 一个完整的信号生命周期包含4个重要的事件,这4个重要事件分别是? 信号诞生:信号在进程中注册完毕:信号 ...

  9. java中flush函数作用_Java语言中flush()函数作用及使用方法详解

    最近在学习io流,发现每次都会出现flush()函数,查了一下其作用,起作用主要如下 //------–flush()的作用--------– 笼统且错误的回答: 缓冲区中的数据保存直到缓冲区满后才写 ...

最新文章

  1. hadoop 安全模式
  2. c/c++文件I/O函数学习--不断补充
  3. hdu5007 小水题
  4. uc浏览器为什么安装在c盘_你肯定不知道为什么Windows上面的软件都想把自己安装在C盘...
  5. 大剑无锋之ArrayList中使用增强for循环能删除元素吗?【面试推荐】
  6. Pytorch torchvision完成Faster-rcnn目标检测demo及源码详解
  7. update 没有索引导致业务崩了,老板骂了一个小时
  8. 专技天下河北省2016年专业技术人员继续教育公需科目题库答案(答题器)
  9. [大数据之Sqoop] —— 什么是Sqoop?
  10. YV12数据与AVFrame的相互转换
  11. paip.提高稳定性---自动检测sleep mysql数据库死连接以及kill
  12. 饼状统计图php,制作圆饼统计图
  13. 虚拟机启动失败-Intel VT-x 处于禁用状态 的解决方案
  14. kernel网络之RSS,RPS,RFS和XPS
  15. python简单操作excel
  16. android入门小Demo
  17. java txt文件追加_java如何追加写入txt文件
  18. 职场六大困惑,处理不好每一个都很扎心
  19. Hive 分区表 分桶表
  20. 戴尔 成铭3980台式计算机,戴尔成铭3980商用台式机评测 高颜值高性能

热门文章

  1. 目标4个9的可用性?试试用 Prometheus 和 Grafana记录服务可用时间
  2. 大厂与小厂工作的选择
  3. 当git上只做文件大小写重命名的修改时,如何躲坑...
  4. Flowable V5.x迁移至Flowable V6时需要注意的事项
  5. 操作系统:用户态和核心态的区别
  6. IO:同步,异步,阻塞,非阻塞
  7. 46.一个例子了解C++中异常处理
  8. GitHub:基于epoll机制的高并发聊天室,c语言实现
  9. aix下mysql启动命令_AIX常用操作命令
  10. 数据中心基础运维人员的职业规划