读书人

发现CString一个有关问题

发布时间: 2012-09-24 13:49:41 作者: rapoo

发现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(); 

读书人网 >C++

热点推荐