首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

发现CString一个有关问题

2012-09-24 
发现CString一个问题C/C++ codeCString csText,csLinecsLine123//长度为3fread(fp,csLine.GetBuffer(

发现CString一个问题

C/C++ code
CString csText,csLine;csLine="123";//长度为3fread(fp,csLine.GetBuffer(),5);...//各种长度大于3的赋值(别用等号操作符或format)csText+=csLine;//这句内部实现是Append( strSrc.GetString(), strSrc.GetLength() );我想可能是不用等号操作符GetLength那个长度也就没有自动更新吧如何将初始的长度3,更新为实际长度5


[解决办法]
可以用GetBuffer为CString预分配空间,赋值后用ReleaseBuffer释放多余空间
[解决办法]
CString这类自己管理内存的封装类,不应该直接对内存操作,它们管理的不仅是内存的地址还有内存的大小,这些对于使用者应该是不可见的
如果你直接写内存,那么很有可能你写的就是没有分配给你的内存
[解决办法]
fread(fp,csLine.GetBuffer(),5);...//各种长度大于3的赋值(别用等号操作符或format)
改为
C/C++ code
fread(fp,csLine.GetBuffer(6),5);csLine.ReleaseBuffer(); 

热点排行