CStdioFlie问题
- C/C++ code
/* *为啥保存ASCII都行??? *UNICODE却不行???? *难道是人品问题??? *求解决方法..... */void CNotepadDlg::OnSave(){ // TODO: 在此添加命令处理程序代码 CFileDialog fSave(FALSE); fSave.m_ofn.lpstrTitle = _T("另存为"); fSave.m_ofn.lpstrFilter = _T("Text Files(*.txt)\0*.txt\0All Files(*.*)\0*.*\0\0"); fSave.m_ofn.lpstrDefExt = _T("txt"); if(fSave.DoModal() == IDOK){ CStdioFile pSave(fSave.GetPathName(), CFile::modeCreate | CFile::modeWrite); CString strTemp; m_edit.GetWindowText(strTemp); pSave.WriteString(strTemp); pSave.Close(); }}void CNotepadDlg::OnOpen(){ // TODO: 在此添加命令处理程序代码 CFileDialog fOpen(TRUE); fOpen.m_ofn.lpstrTitle = _T("打开"); fOpen.m_ofn.lpstrFilter = _T("Test Files(*.txt)\0*.txt\0All Files(*.*)\0*.*\0\0"); fOpen.m_ofn.lpstrDefExt = _T("txt"); if(fOpen.DoModal() == IDOK){ CStdioFile pOpen(fOpen.GetPathName(), CFile::modeRead); CString strTemp; pOpen.ReadString(strTemp); m_edit.SetWindowText(strTemp); pOpen.Close(); }}[解决办法]
CStdioFile pOpen(fOpen.GetPathName(), CFile::modeRead|CFile::typeBinary);
[解决办法]
用CFile,不用CStdioFile
CFile pSave(fSave.GetPathName(), CFile::modeCreate | CFile::modeWrite);
CString strTemp(_T("World!你好!Hello, World"));
pSave.Write(strTemp, strTemp.GetLength() * sizeof(TCHAR));
pSave.Close();