惭愧,做了3年多 C++ 了,虽说半路出家,之前也做过 Linux 一年多,但是 MFC 也做了一年多了,由于一直维护公司的老项目,也没有做过新东西。
最近心血来潮,在网上找了些学习视频,复习下 MFC 控件的使用,熟悉下 MFC 的 API,毕竟是吃饭的家伙,废话不多说,来干货。
最近在仿写一个记事本软件,初具基本功能,但遇到了一个比较蹩脚的问题,MFC 在 UNICODE 字符集下在读取 ANSI 编码的文本文件时,全中文没问题,全英文也没问题,但是中英文混合时,当英文个数为奇数个时,英文后面的汉字就会编程乱码。
原因是我想的太简单了,觉得读取 ANSI 编码的文本文件,就是读取多字节字符串,也就有了如下代码:
代码中的形参只是定义了一个 CFile 对象并以只读方式打开,个人习惯,如果解释就要解释的明明白白,所以给这两句代码也复制过来了。
CFile file;
file.Open(szFile, CFile::modeRead);
1 void CNotepadDlg::ReadAnsi(CFile& file) 2 { 3 file.Seek(0, CFile::begin); 4 char buff[1024]; 5 UINT nRet = 0; 6 CString str; 7 8 while (nRet = file.Read(buff, sizeof(buff - 1))) 9 { 10 buff[nRet] = '