地狱0,
我需要用 c++ 编写一个支持 unicode 的文本文件(实际上是 csv 文件,但是是 nvm)。我必须修改的源代码已经很好用了,但只支持 ANSI。它与 wofstream 一起工作:
std::wofstream x;
CString stringToWrite;
/*
* getting file
*/
x.open (szFile, std::ios_base::out | std::ios_base::trunc);
/*
* assigning content to stringToWrite
*/
x.write (stringToWrite.GetString(), stringToWrite.GetLength());
我到处找到的简单解决方案是:
x.imbue(std::locale(x.getloc(),
new std::codecvt_utf16<wchar_t, 0x10ffff, std::little_endian>));
x.open (szFile, std::ios_base::out | std::ios_base::trunc);
但由于某些原因,我无法实例化 codecvt,visualStudio 告诉我参数不符合声明。我不明白为什么。我的一个猜测是我的编译器不支持它,但现在我不知道该怎么想。
我还尝试了另一种解决方案:通过手动编写第一个字符来声明文件以 utf-16 编码,如下所示:
x << "\0xFFFE";
它正在工作(导出的文件以 utf-16 编码)但它把我所有的写入文件都弄乱了,因为我需要在 utf-16 中“转换”我的 CString,但经过 2 天的尝试,我无法得到一些工作。
如果我可以使用第一个解决方案,那就太棒了,但我真的不明白为什么我的编译器不想这样做。我在互联网上找不到有同样问题的人。如果有人知道它为什么这样做,或者有另一个替代解决方案来编写 utf-16 txt 文件,那将非常感激 <3