首页 > 其他分享 >CString类的ReleaseBuffer的用处是什么

CString类的ReleaseBuffer的用处是什么

时间:2024-09-14 11:47:01浏览次数:10  
标签:aaa CString ReleaseBuffer TCHAR str 100 用处

用了好多年了,才发现这个问题,写个小程序测试了,终于搞明白了:

CString str;
str = _T("1234567890");
TCHAR *p = str.GetBuffer(100); //TCHAR *p = str.GetBufferSetLength(100);
_tcscpy(p,_T("12345678111111190"));
str.ReleaseBuffer();  //测试
str += "aaa";
m_pEdit->SetWindowText(str);

上面这段程序运行后会显示 12345678111111190aaa,

如果去掉str.ReleaseBuffer();这行,就会显示234567811aaa

这是因为ReleaseBuffer()并不是释放整个Buffer,而是释放掉字符串后面无效的Buffer。

如果不执行,CString还是原来的长度,因为程序不清楚,分配的100这个大空间到底要用多少。

str += "aaa";这行为什么不自动计算长度,因为CString可以包含\0的,

比如用TCHAR *p = str.GetBufferSetLength(100);这个长度会更新到CString str中。

str += "aaa"后str的长度103,但Edit显示不了aaa,被null截掉了,但对于二进制文件,却是一种应用场景。

 

这些都要因为方便而简化的写法导致的混淆含义,若是显式无歧义的写法(字符串处理):

参数其实是保留的长度。释放的是多余的空间。

CString str;
str = _T("1234567890");
TCHAR *p = str.GetBuffer(100);
PRINT("LEN= %d ", strlen(p));
_tcscpy(p,_T("12345678111111190"));
int len = _tcslen(p);
str.ReleaseBuffer(len);
str += "aaa";
m_pEdit->SetWindowText(str);

标签:aaa,CString,ReleaseBuffer,TCHAR,str,100,用处
From: https://www.cnblogs.com/xgz21/p/18413688

相关文章

  • 箱包五金生产ERP有哪些用处
     随着制造业的不断发展,越来越多的企业开始意识到信息化管理的重要性。特别是在箱包五金行业,一套高效的ERP系统不仅可以帮助企业提升管理水平,还能显著增强企业的市场竞争力。生产计划与控制首先,ERP系统的核心功能之一就是优化生产流程。对于箱包五金制造而言,从原材料采......
  • 阿里云服务器镜像,有大用处
    大家好,我是小悟有时候阿里云旧服务器快到期了,想把项目、数据、软件挪到新服务器上,如果全部重新搭建的话,那无疑是耗时又费力。有了镜像迁移,就方便了许多。新旧服务器的类型要一致,比如都是ECS服务器,所属地域要选一样的。新服务器在配置上最好不低于旧服务器,不然可能会出现未......
  • Python函数之*[参数名]和**[参数名]的用处
    一、*[参数名]调用合法调用普通调用*参数名一般写成*args,如:deffunc(*args): print(args)可以试着调用func:>>>func(1)(1,)>>>func()()>>>func(1,2,3)(1,2,3)>>>func(dict(),set(),str(),int())({},set(),'',0)所以,我们发现,这......
  • 具有 AI 加速的MIMX9332AVTXMAB、MIMX9332CVTXMAB、MIMX9332XVTXMAB、MIMX9332XVVXMAB
    i.MX93应用处理器通过集成的EdgeLock®SecureEnclave提供高效的机器学习(ML)加速和高级安全性,以支持高能效的边缘计算。i.MX93应用处理器是i.MX产品组合中首款集成可扩展Arm®Cortex®-A55内核的处理器,为基于Linux®的边缘应用和ArmEthos™-U65microNPU带来......
  • 一个操作系统的设计与实现——第26章 多处理器(下):应用处理器引导
    26.1应用处理器当计算机启动时,不管其中有多少个CPU,都只有一个CPU会真正启动,这个CPU就称为引导处理器(BootstrapProcessor,BSP);而其他CPU会等待被BSP唤醒,这些CPU就称为应用处理器(ApplicationProcessor,AP)。BSP可以在任意时刻向所有AP广播唤醒信号,当AP接受到信号后,就会启动BIOS,随......
  • TypeError: add_code_sample_docstrings() got an unexpected keyword argument ‘tok
    可能是transformers的版本太高,可以考虑降版本。更推荐的解决方案:processor_class替换tokenizer_class注意:需要CTRLShiftF tokenizer_class,全部替换掉。参考链接:ALBEF(AlignbeforeFuse:VisionandLanguageRepresentationLearningwithMomentumDistillati)算法阅......
  • Python编程中不可忽视的docstring使用详解
    概要在Python编程中,代码的可读性和可维护性至关重要。除了清晰的命名和结构良好的代码外,良好的文档字符串(docstring)也是确保代码易于理解和使用的关键工具。docstring是Python中用于记录模块、类、方法和函数行为的字符串,帮助开发者和用户快速了解代码的功能和用法。本文将......
  • .NET8 中空引用处理以及DDD相关概念
    作为一名.NET开发者,小白很开心看到.NET版本更新后,.NET语法越来越有意思,写起来也越来越有趣。很多新的语法,虽然变化不小,但是对小白这位从.NETFramework就开始写.NET的程序员来说,那也是信手拈来。但是小白发现string都开始变为可空的时候,那还是认真的翻阅了一下相关的资料,以免不......
  • 刷屏的AI绘画,背后的用处你可能想不到
    最近AI绘画火了,大家都很上头,争相在互联网上分享一些人类早期驯服AI失败的“珍贵画面”。AI绘画,顾名思义就是利用人工智能进行绘画。在相关程序里,你输入一些关键词,比如精致五官、空气刘海、绝世美人等,只要1分钟,立等可取一张媲美美少女战士的美图。或者也可以上传自己的原图......
  • Windows 查看端口占用情况 & 80端口被占用处理方法
    一.用netstat指令查看是端口占用情况查看所有端口的占用情况 命令格式:netstat[options]-a表示显示所有活动的TCP连接以及计算机监听的TCP和UDP端口。-n表示只以数字形式显示所有活动的TCP连接的地址和端口号。-o表示显示活动的TCP连接并包括每个连接的进程ID(PID)。查看特定端......