代码如下
就是把文件读到CEdit然后修改在写入txt文档void CFileDlg::OnOpen()
{
    // TODO: 在此添加命令处理程序代码
    CString m_szTmp;
    char buf[1000]={0};
    CFileDialog dlg(TRUE);
    if(dlg.DoModal()==IDOK)
    {
   CFile mfile;
   mfile.Open(dlg.GetPathName(), CFile::modeRead);
   mfile.Read(buf,1000);
   m_szTmp = buf;
   UpdateData(false);
   mfile.Close();
     }
     GetDlgItem(IDC_EDIT1)->SetWindowText(m_szTmp); }void CFileDlg::OnSave()
{
// TODO: 在此添加命令处理程序代码
CString str;
GetDlgItem(IDC_EDIT1)->GetWindowText(str); 
CFileDialog dlg(FALSE,_T("*.txt"));
if(dlg.DoModal() == IDOK )
{
CFile mfile;
mfile.Open(dlg.GetPathName(),CFile::modeCreate|CFile::modeWrite);
mfile.Write(str.GetBuffer(0),str.GetLength());
mfile.Close();
}}
我打开的txt里面是的字符是       hello,my friend
不修改然后保存到另一个txt怎么是 h e l l o , m y
中间怎么多了这几个空格啊 
用MessageBox输出的值是对的 写进去的时候字符之间多了空格 
不知道为什么

解决方案 »

  1.   

    如果你的工程是Unicode的则GetWindowText默认映射到GetWindowTextW这个函数上、所以获得的字符是Unicode的、而你保存的时候没有以Unicode的形式保存、而记事本默认以ANSI方式打开文件、所以就得到你的那个结果、
    解决办法有两个、一个是用ANSI工程、第二个是保存为txt的时候前面加上0xff 0xfe、这两个值然后后面再是你的内容、
    还有保存时候的大小用str.GetLength() * sizeof(wchat_t)算、