C ++无法实例化用于在txt文件中编写unicode的codecvt

时间:2016-04-22 10:56:46

标签: c++ utf-16 wofstream codecvt

Hell0,

我需要用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文件,那将非常感谢&lt; 3

1 个答案:

答案 0 :(得分:0)

问题解决了,我发现了这个:http://www.codeproject.com/Articles/9539/A-UTF-Class-for-Reading-and-Writing-Unicode-Fil

这正是我想要的。