C++显示打开文件的内容为什么是乱码
我建立了一个基于对话框的应用程序,在对话框中添加了两个编辑框,一个按钮,编辑框一个用来显示打开文件的路径,一个用来显示内容,显示路径的ID是:IDC_PATHNAME,另...
我建立了一个基于对话框的应用程序,在对话框中添加了两个编辑框,一个按钮,编辑框一个用来显示打开文件的路径,一个用来显示内容,显示路径的ID是:IDC_PATHNAME,另一个是IDC_TEXT,添加的打开按钮的事件是:
CString strPathname,strText;
CFileDialog dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY |OFN_OVERWRITEPROMPT,"All Files(*.TXT)|*.TXT||",AfxGetMainWnd());
if (dlg.DoModal()==IDOK)
{
strPathname=dlg.GetPathName();
CEdit*pPathName=(CEdit*)GetDlgItem(IDC_PATHNAME);
pPathName->SetWindowText(strPathname);
CFile file(strPathname,CFile::modeRead);
char read[10000];
for (int i=0;i<file.GetLength();i++)
{
strText+=read[i];
}
file.Read(read,10000);
file.Close();
CEdit* pText=(CEdit*)GetDlgItem(IDC_TEXT);
pText->SetWindowText(strText);
}
程序能够正常运行,能够显示路径,但是显示文本文件的时候,全是“烫”很奇怪为什么显示的都是这个字,还有我试着打开了一段英文,结果说是冲突了,最后想问下,如何设置编辑框的属性,让这个显示的内容自动换行,我这个显示的怎么是一行呢,各位高手,请帮忙吧,我是初学者,非常感谢各位赐教; 展开
CString strPathname,strText;
CFileDialog dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY |OFN_OVERWRITEPROMPT,"All Files(*.TXT)|*.TXT||",AfxGetMainWnd());
if (dlg.DoModal()==IDOK)
{
strPathname=dlg.GetPathName();
CEdit*pPathName=(CEdit*)GetDlgItem(IDC_PATHNAME);
pPathName->SetWindowText(strPathname);
CFile file(strPathname,CFile::modeRead);
char read[10000];
for (int i=0;i<file.GetLength();i++)
{
strText+=read[i];
}
file.Read(read,10000);
file.Close();
CEdit* pText=(CEdit*)GetDlgItem(IDC_TEXT);
pText->SetWindowText(strText);
}
程序能够正常运行,能够显示路径,但是显示文本文件的时候,全是“烫”很奇怪为什么显示的都是这个字,还有我试着打开了一段英文,结果说是冲突了,最后想问下,如何设置编辑框的属性,让这个显示的内容自动换行,我这个显示的怎么是一行呢,各位高手,请帮忙吧,我是初学者,非常感谢各位赐教; 展开
3个回答
展开全部
我以前也遇到过你这种类似的情况,但是我以前用的是C#写记事本,首先一个就是你需要把字体设置成为gb2312。然后我觉得你读取内容的时候也有问题C#和JAVA都有流,不知道C++有没有,一个一个字符串接收是不行的。而且还是数组。
另外显示为一行有可能是因为接收的时候把回车键也接收成为字符了,所以会显示为一行,要用转义字符换回来。
另外显示为一行有可能是因为接收的时候把回车键也接收成为字符了,所以会显示为一行,要用转义字符换回来。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询