MFC 从TXT文件里读取字符串,总是只读取到第一个字母,为什么
我试过各种方法比如CFilefile;CStringstr;file.Open(_T("my.txt"),CFile::modeRead,NULL);char*lpBuf...
我试过各种方法
比如
CFile file;
CString str;
file.Open(_T("my.txt"), CFile::modeRead,NULL);
char* lpBuf = new char[5];
memset(lpBuf,0,5);
file.Read(lpBuf,5);
str = lpBuf;
::AfxMessageBox( str );
delete lpBuf;
file.Close();
//网络上查到的各种读取字符串的方法,结果显示总是只取到目标字符串的首字母 展开
比如
CFile file;
CString str;
file.Open(_T("my.txt"), CFile::modeRead,NULL);
char* lpBuf = new char[5];
memset(lpBuf,0,5);
file.Read(lpBuf,5);
str = lpBuf;
::AfxMessageBox( str );
delete lpBuf;
file.Close();
//网络上查到的各种读取字符串的方法,结果显示总是只取到目标字符串的首字母 展开
展开全部
如果你读近内存的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
试一试这样
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
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询