文件导入导出有关问题

文件导入导出问题?
//导入按钮
void CFileDlg::OnButton3() 
{
// TODO: Add your control notification handler code here
char siFile[] = "MyType Files (*.txt)|*.txt|All Files (*.*)|*.*||";

//新建一个文件对象
CFileDialog fileDlg(TRUE,"txt","*.txt",OFN_FILEMUSTEXIST|OFN_OVERWRITEPROMPT,siFile,this);

if (fileDlg.DoModal() == IDOK)
{
CString path = fileDlg.GetPathName();//取得文件的路径

CFile mFile(path,CFile::modeRead);//创建一个文件对象,并且说明读取类型

//如果文件长度小于2的话就返回
if (mFile.GetLength()<2)
{
return;
}

char str[5000]; //定义一个数组来接受导入的文件,字节越大能接收的数据就越大
mFile.Read(str,5000);//对导入的文件进行读取
CString content(str);//定义一个string类型的对象关联数组
m_contents = content ;//把数组的内容赋给显示文件内容文本框
mFile.Close(); //关闭文件流
UpdateData(false);
}


}
  我是这样写导出文件的。。。可是文本框接受的数组长度有限制,我就定义一个大字节的str数组,可是问题来了,当我导入文件时,如果文件字节长度没有到5000那个后面就出现了乱码,如果文件字节长度超过了5000,则后面的文字就显示不了了。这段代码我该怎么改啊!!!??

------解决方案--------------------
try CRichEdit control.
------解决方案--------------------
char str[5000] = {0};
初始化一下
------解决方案--------------------
探讨

char str[5000] = {0};
初始化一下