VC Unicode工程读写文本文件
参考文章: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文件会有问题,请见代码示例。
- 上一篇: 什么是分层架构模式
- 下一篇: supervisor 监控redis & mongodb