在Unicode环境下读出和写入文件

近日,做一个文件的读取和写入工作,在网上找到的一些方法,但是却不能完全成功,失败的地方在于:不能写入汉字。我想这肯定和UNICODE环境有关,于是查了一下资料,形成了以下文字。

第一,读取文件(这个没有什么问题)

const TCHAR szFilter[] = _T("CVS文件(*.csv)|*.csv");
CFileDialog OpenFileDialog(TRUE,_T(
"csv"),NULL,OFN_FILEMUSTEXIST|OFN_HIDEREADONLY,szFilter,NULL);
if (OpenFileDialog.DoModal() == IDOK)
{
CString FileName
= OpenFileDialog.GetPathName();
CStdioFile File;
File.Open(FileName,CFile::modeRead);
CString strLine;
while (File.ReadString(strLine))
{
MessageBox(strLine);
}
}



第二,定文件

const TCHAR szFilter[] = _T("CVS文件(*.csv)|*.csv");
CFileDialog OpenFileDialog(FALSE,_T(
"csv"),NULL,OFN_FILEMUSTEXIST|OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,szFilter,NULL);
if (OpenFileDialog.DoModal() == IDOK)
{
CString FileName
= OpenFileDialog.GetPathName();
_tsetlocale(LC_CTYPE,_T(
"chs"));
CStdioFile File(FileName,CFile::modeCreate
|CFile::modeWrite);
File.SetLength(
0);
CString strLine
= _T("你,我\n");
File.WriteString(strLine);
strLine
= _T("你,我\n");
File.WriteString(strLine);
File.Close();
}


当然,在此之前还需要引入一个头文件#include <locale>


posted @ 2011-09-18 22:04  luoshupeng  阅读(1934)  评论(0编辑  收藏  举报