Estoy intentando escribir una wstring a presentar con ofstream en modo binario, pero creo que estoy haciendo algo mal. Esto es lo que he intentado:escritura utf16 a archivo en modo binario
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 de apertura, por ejemplo, en Firefox con la codificación establecida en UTF16 se mostrará como:
hola
¿Alguien podría decirme por qué sucede esto?
EDIT:
Al abrir el archivo en un editor hexadecimal me sale:
FF FE 68 00 00 00 65 00 00 00 6C 00 00 00 6C 00 00 00 6F 00 00 00
Parece que tengo dos bytes adicionales entre cada carácter por alguna razón?
Añadir una faceta a la local asociada con la corriente para hacer la conversión de wchar_t a la salida correcta. Vea abajo. –