先来看一段代码:
CString str="abcdefg";
LPTSTR pstr=str.GetBuffer();
    strcpy(pstr,"ab");
str.ReleaseBuffer();
    此时调用str.GetLength()获取的值是2,正确无误。
但如果注释掉str.ReleaseBuffer()这一行,str.GetLength()获取的值则是7。
怎么会这样呢,我们来看看MFC中ReleaseBuffer的代码:
void ReleaseBuffer( int nNewLength = -1 )
     {
          if( nNewLength == -1 )
          {
               nNewLength = StringLength( m_pszData );
          }
          SetLength( nNewLength );
     }
很明显ReleaseBuffer只有一个作用,就是更新字符串的长度。CString内,GetLength获取字符串长度并不是动态计算的,而是在赋值操作后计算并保存在一个int变量内的,当通过GetBuffer直接修改CString时,那个int变量并不可能自动更新,于是便有了ReleaseBuffer。
其实,计算长度还能用strlen(),这个就算不ReleaseBuffer也不会出错,但如果不ReleaseBuffer,在+=这种赋值时字符串很可能会跟想要得到的不同。

MFC中关于CString::ReleaseBuffer相关推荐

  1. MFC中的CString类使用方法指南

    MFC中的CString类使用方法指南 原文出处:codeproject:CString Management [禾路:这是一篇比较老的资料了,但是对于MFC的程序设计很有帮助.我们在MFC中使用字符 ...

  2. 在MFC中使用Cstring

    此文介绍了关于MFC使用CString的资料,可一参考一下. 转自于VC知识库:http://www.vckbase.com/index.php/wv/829 通过阅读本文你可以学习如何有效地使用 C ...

  3. VC++开发学习一(MFC中的CString类的常用的方法技巧介绍)

    ①.CString 类对象的初始化: CString str; CString str1(_T("abc")); CString str2 = _T("defg" ...

  4. MFC中的CString.Format及CString,string,char*之间的转换

    1.CString.Format的使用:https://blog.csdn.net/wangkaishou/article/details/5846152 2.CString,string,char* ...

  5. MFC中CString转换成char数组的问题

    由于结构体中用到联合体(联合体需要确定分配内存分配大小)或其它因素,需要用char数组来保存字符串,但是在MFC中一般都是用CString来存放字条串.关于它们之间的转换,在VS2008中有时会出现异 ...

  6. MFC中CString.format用法

    MFC中CString.Format的详细用法 收藏  在MFC程序中,使用CString来处理字符串是一个很不错的选择. CString既可以处理Unicode标准的字符串,也可以处理ANSI标准的 ...

  7. MFC中CString.Format的用法

    http://www.cnblogs.com/kongtiao/archive/2012/06/13/2548033.html 在MFC程序中,使用CString来处理字符串是一个很不错的选择.CSt ...

  8. MFC中CString转为char*;char*转为CString

    一.char*转为CString 如果工程使用多字节字符集 CString str; char sz[]="你好!"; str.Format("%s",sz); ...

  9. 如何在MFC中读写配置文件

    如何在MFC中读写配置文件 在我们写的程序当中,总有一些配置信息需要保存下来,以便完成程序的功能,最简单的办法就是将这些信息写入INI文件中,程序初始化时再读入.具体应用如下: 一.将信息写入.INI ...

最新文章

  1. Android SurfaceView 黑背景的处理方法
  2. cocos2d-x 3.0游戏实例学习笔记 《跑酷》第四步--地图循环amp;主角加入动作
  3. 2017 ACM/ICPC(西安)赛后总结
  4. 2021/6/18~19 每天学习python 30分钟 -了解python - python的基本变量概述
  5. python多级菜单查询简化版
  6. Ubuntu 13.10配置root登录
  7. centos 修改ip地址
  8. 《Python编程从入门到实践》记录之列表切片
  9. 纽微特记事:有了工作产出,领导吓坏了
  10. LabVIEW安装第三方VISA软件后NI VISA失效
  11. Python程序设计实验——2.掷骰子游戏
  12. 中美大学生阅读书单大公开,哈佛和北大差异这么大!
  13. Tensorflow移动端之如何将自己训练的MNIST模型加载到Android手机上
  14. 关于ES2020语法2345加速浏览器不兼容问题
  15. 显著性检测——GR模型
  16. java怎么打开控制台_java控制台怎么打开?如何启用和查看 Java 控制台?
  17. 区块链扫盲之7,区块链与以太坊
  18. java图片切割类任务书_基于Java的截图工具(可储存编辑)的设计与实现毕业论文+任务书+翻译及原文+答辩PPT+源码+辅导视频...
  19. 申请访问学者个人简历怎么写的够高水平?
  20. CPM-Bee本地部署的实战方案

热门文章

  1. 【公网远程Jellyfin】——本地部署Jellyfin影音服务器
  2. uniapp城市列表_uni-app框架城市选择器
  3. 危害程序员职业生涯的三大观念
  4. 四川大学和东北大学计算机科学,39所985高校分档及最强专业盘点
  5. SpringBoot中的Thymeleaf基本使用
  6. 华为云云耀云服务器安装宝塔图文教程
  7. python 计算春节工资_春节期间加班工资怎么算?看权威解答
  8. linux查看进程运行命令行参数,linux查看进程运行命令
  9. 数组转集合的方法(注意事项)
  10. 如何获取系统时间java_java如何获取系统当前时间,java获取当前时间date类型