在文章开始之前,先声明一下,本人的编程环境为vs2010,MFC工程使用unicode字符集。
在MFC中,用CStdioFile类可以很方便地一行一行读取文件。 可是最近我在编写MFC程序时,用CStdioFile读取中文文本时,发现读入的是乱码。在网上查了很多方法都得不到很好的解决。后来本人冷静下来仔细分析了一下,找到了一种可行的方法。下面是我的这种方法的基本思路:
读入 MultiByteToWideChar()
中文文本(ascii编码方式) --------------> char ch[ ] ----------------------------------> wchar_t wch[ ]
首先,为了读入中文文本,我从CFile类派生了自己的类CMyFile,并在CMyFile类中添加并实现了每次读取一行的GetLine()函数。
然后,用GetLine函数每次从文件中读取一行,存入字符数组char ch[ ]中。
到目前为止,数组ch[ ]中的字符是ascii编码方式,为了将其转换为unicode编码方式,需调用API函数MultiByteToWideChar()。
在这里,具体的代码我就不详细写了,自己研究一下应该很容易写出的。