读写文件时,每次都要进行字符串转换,很麻烦。
不如这样一步搞定。
1#include <locale.h>
2::setlocale( LC_CTYPE, ("chs"));
3

R/L 区域/语言设置
http://msdn.microsoft.com/zh-cn/library/cdax410z(v=vs.90).aspx
Codepage可以在MSDN上找到。
http://msdn.microsoft.com/en-us/library/windows/desktop/dd317756(v=vs.85).aspx

++++++++++++++++++++++++++++
已知一文本文件位于C:\czech.txt内容如下
čeština
查看属性为7字节。
建立一个对话框程序,
CStatic 控件ID为IDC_STATIC
++++++++++++++++++++++++++++

#include <locale.h>
#define BUFFER 20
-----------------------------------------
函数内部实现:
int ReadCzech{
CStatic* outs = (CStatic*)  GetDlgItem(IDC_STATIC);
CFile file;//不能用CSTDIOFILE;
if (!file.Open(_T("c:\\fff.txt"),CFile::modeRead) )

   {
       outs->SetWindowTextW(_T("false"));
       return 1;
   }
char chars[BUFFER];//读取时的字符缓冲,最好取大一些;

UINT nBytes = (UINT) file.GetLength();//获得文件大小;
if (BUFFER < nBytes) return 2;//缓冲区过小,具体处理请自行添加;
_locale_t czech = _create_locale(LC_ALL,"czech");//创建Locale结构体;
file.Read(chars,nBytes);//读文件;
WCHAR wchars[BUFFER];

size_t wcharsize;
_mbstowcs_s_l(&wcharsize,wchars,nBytes*2,chars,BUFFER,czech);//转换字符集;
CString reads;

reads = wchars;
reads.Trim(_T(""));//去掉多余的乱码;
outs->SetWindowTextW(reads.GetBuffer());
_free_locale(czech);//按照MSDN的说法,创建一个locale,必须对应释放;
file.Close();
return 0;
}