fstream读写UNICODE文件

今天遇到要处理UNICODE文件的情况,网上找了一圈都是读取出字节,再转的,这个不方便啊!想起了有codecvt这么个东西,顺藤摸瓜,找到了方法。

locale utf16(locale(""), new codecvt_utf16<wchar_t, 0x10ffff, little_endian>);
wifstream fin("Module.rc");
wofstream fout("Module.rc.tt", ios_base::out | ios_base::binary);
fin.imbue(utf16);
fout.imbue(utf16);
wstring line;
while (getline(fin, line))
fout << line << endl;

  

codecvt_utf16的最后参数我使用的是little_endian,因为我的文件就是这格式的,大家根据自己的情况进行修改。如果纯粹的读取内容的话,可以使用consume_header,自动识别格式。

wofstream需要使用二进制输出,否则输出来的回事乱码。

posted @ 2015-04-13 13:34  IceDream  阅读(1386)  评论(0编辑  收藏  举报