牛骨文教育服务平台(让学习变的简单)
博文笔记

VC Unicode工程读写文本文件

创建时间:2010-12-27 投稿人: 浏览次数:3153

参考文章:http://blog.csdn.net/wuchen1004/archive/2010/08/03/5786537.aspx

               http://www.codeproject.com/KB/files/ConfigString.aspx

 

因为Windows底层处理字符串是以Unicode形式处理的,所以现在一般使用VC开发软件时都选择Unicode的工程。

在Unicode工程中,读写文本文件就会有一个比较纠结的问题:

      一般情况下我们新建和编辑的文本文件都是ANSI格式的,而在ANSI工程中用着十分方便的CStdioFile读取字符串时

使用的是CString类型, 这就导致Unicode工程环境下CStdioFile将Ansi的字符串读取到了CStringW类型中,

即使想使用CA2W来转, 也会出现类型不匹配的错误。

      这种情况下,只好自己使用MultiByteToWideChar这类API来转换,实际编码时总是不太方便。但是即使使用这种方法还是

比直接使用ReadFile来读取文件要方便一些, 因为毕竟不需要自己处理换行。

      目前来看Unicode工程环境下读取ansi文件最方便的还是使用fstream,这种方法不仅可以读取一行文本,还可以很方便的读取一行中的多个数字或者单词(参见后面的实例代码)。在CodeProject上有一篇文章,封装了两个读取ansi和unicode字符串的函数,他是直接使用fgetc和fgetwc来读取字符,这种方法本质上跟ReadFile差不多。

      另外值得注意的是,一般情况下创建一个新文件都是Ansi类型的,要创建unicode文件需要在文件的前两个字节写入0xFFFE。

      因为unicode文件开头这两个字节的原因,使用fstream读取unicode文件会有问题,请见代码示例。

 

 

声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。