如果你读近内存的5个字节都是字符,那么意味着保存字符串的缓冲区lpBuf 的最后一个字节不是0,即没有字符串结束符,CString类型字符串要求字符串缓冲区的最后一个字节必须是0作为字符串的结束符。不是你读近内存的都是第一个字母,而是因为保存字符串的缓冲区最后一个字节不是0引起字符串显示错误
试一试这样
memset(lpBuf,0,5);
file.Read(lpBuf,4);//只读4个字节,而不是5个,保证最后一个字节是0
如果文本文件长度是n,那么分配的内存应该是n+1个字节,并且把最后一个字节设为0,即memset(lpBuf,0,n+1);然后,
file.Read(lpBuf,n);
str = lpBuf;
此时str就是整个文本文件的内容了。
注意:编程的时候要注意区分文本文件文本字符编码,即是多字节还是unicode