utf 16 — C ++ Не могу создать экземпляр codecvt для записи юникода в текстовый файл

Hell0,

Мне нужно написать текстовый файл (CSV-файл в фактах, но NVM), поддерживающий Unicode с C ++.
Исходный код, который я должен изменить, уже отлично работает, но поддерживает только 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), но он запутывает всю мою запись в файл, потому что мне нужно «преобразовать» мою CString в utf-16, но после 2 дней попыток я не могу заставить что-то работать.

Было бы здорово, если бы я мог использовать первое решение, но я действительно не понимаю, почему мой компилятор не хочет это делать. Я не могу найти в Интернете никого с такой же проблемой.
Если кто-нибудь знает, почему он это делает, или у вас есть другое альтернативное решение для записи UTF-16 TXT-файла, это будет очень полезно <3

0

Решение

Проблема решена, я нашел это: http://www.codeproject.com/Articles/9539/A-UTF-Class-for-Reading-and-Writing-Unicode-Fil

Это именно то, что я искал.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]