我试图用二进制模式的ofstream写一个wstring文件,但我觉得我做错了.这就是我尝试过的:
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();
Run Code Online (Sandbox Code Playgroud)
在例如Firefox中打开test.txt,编码设置为UTF16,它将显示为:
你好
谁能告诉我为什么会这样?
编辑:
在十六进制编辑器中打开文件我得到:
FF FE 68 00 00 00 65 00 00 00 6C 00 00 00 6C 00 00 00 6F 00 00 00
Run Code Online (Sandbox Code Playgroud)
看起来我出于某种原因在每个角色之间得到两个额外的字节?