分析: GetBuffer, ReleaseBuffer, GetBufferSetLength
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相关推荐
- GetBuffer, ReleaseBuffer, GetBufferSetLength的用法
GetBuffer和ReleaseBuffer是一套需要配合使用的函数, 与GetBufferSetLength相比, 优点是如果分配的空间大于实际保存的字符串(0结尾), ReleaseBuffer ...
- Getbuffer ReleaseBuffer Cstring
getbuffer是为了让你使用CString类中,保存字符串缓冲区的那块指针. 至于releasebuffer,在MSDN中有这样一句话. If you use the ...
- MFC CString的GetBuffer()/ReleaseBuffer()
CString GetBuffer()/ReleaseBuffer()两个方法的使用 LPTSTR GetBuffer(int nMinBufLength); void ReleaseBuffer(i ...
- 精解CString类的GetBuffer,ReleaseBuffer 函数(VC++)
CString的GetBuffer用法 一.函数原型 CString::GetBuffer LPTSTR GetBuffer( int nMinBufLength ); throw( CMemoryE ...
- MFC CString GetBuffer/ReleaseBuffer 的使用条件
今天为了通过串口往单片机里写一个16进制字符去控制单片机的adc的起停,结果糊涂到把'\x01'误写成'\0x01',怎么也得不到意想的结果,程序员有时候会犯低级错误,有时候怎么也跳不出去,这时候通过 ...
- MFC CString GetBuffer ReleaseBuffer方法
一.函数原型 CString::GetBuffer LPTSTR GetBuffer( int nMinBufLength ); throw( CMemoryException ); Return V ...
- [MFC]对CString::GetBufferSetLength方法的探究,需要ReleaseBuffer,GetLength才正确!
在使用CString的GetBufferSetLength方法时,遇到了一个问题,代码如下: CString path; ::GetCurrentDirectory(MAX_PATH, path.Ge ...
- BSTR 、LPCTSTR、CString附C语言串基本操作
CString ,BSTR ,LPCTSTR之间关系和区别 CString是一个动态TCHAR数组,BSTR是一种专有格式的字符串(需要用系统提供的函数来操纵,LPCTSTR只是一个常量的TCHAR指 ...
- VC2010不能将参数从“CString”转换为“const char *”
原文地址:http://fengqing888.blog.163.com/blog/static/330114162012016103558408/ 你在vs2010中默认字符集是UNICODE字符集 ...
最新文章
- 苹果App Icon的问题
- python数据库有什么特点_python进阶十——mysql初识
- 【PC工具】更新图片批量处理工具Image Tuner,绿色免安装工具软件
- iwrite提交不了作业_在云端,我们把花样作业pick起来!
- 最短路径(弗洛伊德算法)
- eclipse 代码提示后面的百分比是什么意思?
- 回文绝对求下联:亚冠决赛决冠亚
- qt-sdk-linux,在linux系统上安装qt-sdk步骤.doc
- 模糊算法 matlab,几种模糊控制算法的MATLAB仿真.pdf
- Could not find a version that satisfies the requirement pytz (from django)
- C语言及程序设计基础 课程主页
- 学习使用php实现公历农历转换的方法代码
- php 获取xlsx,PHP Excel Reader读取xlsx文件
- python爬虫基础教程:利用python抓取返利网商品信息
- Linux查看gzip文件原始大小,Linux 文件管理:Linux gzip 压缩
- 解决Windows 10控制面板里原本的索引选项变成Indexing Option Control Panel (32-bit)及空白图标的问题
- RabbitMQ的Queue详解;
- java学习总结(16.06.07)类的静态成员和非静态成员
- Drawio免费绘图工具
- 面向对象与面向过程的区别与联系
热门文章
- DAG三架马车之一NANO
- 【2019.5.31】学习·分享会·总结???
- java后端和js后端的区别_web前端与后端有什么区别?
- 基于android 10的国产手机,国产手机再次发力:骁龙855 Plus+安卓10.0系统!
- IOS开发问题索引(四)
- 计算机硬件技术基础(太原理工大学):第五章
- 移动端有时候触发不了touchend 使用event.preventDefault()后页面无法滚动
- Python数据库安装
- Mac系统下vue脚手架的安装与使用
- oracle创建表同时给值,在高并发、高负载的情况下,如何给表添加字段并设置DEFAULT值?...