C++ Не удается создать экземпляр codecvt для записи Unicode в текстовый файл

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

1 ответ

Решение

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

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

Другие вопросы по тегам