Я пытаюсь написать wstring для файла с потоком в двоичном режиме, но я думаю, что я делаю что-то неправильно. Это то, что я пробовал:Запись utf16 в файл в двоичном режиме
ofstream outFile("test.txt", std::ios::out | std::ios::binary);
wstring hello = L"hello";
outFile.write((char *) hello.c_str(), hello.length() * sizeof(wchar_t));
outFile.close();
test.txt Открытие, например, в Firefox с кодировкой установлен utf16 будет отображаться как:
привет
Может ли кто-нибудь сказать мне, почему это происходит?
EDIT:
Открытие файла в шестнадцатеричном редакторе, я получаю:
FF FE 68 00 00 00 65 00 00 00 6C 00 00 00 6C 00 00 00 6F 00 00 00
Похоже, я получаю два дополнительных байта между каждым символом по какой-то причине?
Добавить фаску в местный, связанный с потоком, чтобы сделать преобразование из wchar_t к правильному выходу. Смотри ниже. – 2008-10-16 13:01:42