使用ReleaseBuffer()后,CString类变量数据清空

当我们利用CString类定义的变量存储字符串时,往往会因为一些需要调用的其他函数形参类型不一致导致错误,例如需要用GetCurrentDirectoryA函数读取当前工作目录时,若第二个参数直接用CString定义的变量,会报“不存在从 "CString" 到 "LPSTR" 的适当转换函数”错误,因此可以利用CString类函数GetBuffer()来获取函数GetCurrentDirectoryA返回的目录字符串,例如:

GetCurrentDirectoryA(MAX_PATH, FilePath.GetBuffer(MAX_PATH));

由于GetBuffer动态分配内存给FilePath变量,并会将变量FilePath锁住,因此需要及时利用ReleaseBuffer()函数释放申请的内存,CString类便会将获取到的数据拷贝到类里面,这样便可以正常使用CString类。


注意:使用GetBuffe(n)时必须给形参添加获取数组大小,因为若没给GetBuffe添加参数,会默认为0,当调用ReleaseBuffer()函数后,CString类的数据也会被释放掉,即CString类变量根本没有获取到真正的字符串数字,因此切记要给GetBuffe添加大于或等于所获取的字符串的大小参数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值