发现CString一个有关问题
发现CString一个问题C/C++ codeCString csText,csLinecsLine123//长度为3fread(fp,csLine.GetBuffer(
发现CString一个问题
C/C++ codeCString 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++ codefread(fp,csLine.GetBuffer(6),5);csLine.ReleaseBuffer();