我试图用二进制模式的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)
看起来我出于某种原因在每个角色之间得到两个额外的字节?
我正在使用Lua编程的第一步,并在运行脚本时遇到此错误:
attempt to index upvalue 'base' (a function value)
Run Code Online (Sandbox Code Playgroud)
这可能是由于我尚未掌握的一些非常基本的东西,但在谷歌搜索时我找不到任何有关它的好信息.有人可以向我解释这是什么意思吗?
我正在编写一个小应用程序,我需要使用不同字节长度的utf-8字符进行测试.
我可以输入unicode字符进行测试,用utf-8编码1,2,3个字节就好了,例如:
string in = "pi = \u3a0";
Run Code Online (Sandbox Code Playgroud)
但是如何获得用4字节编码的unicode字符?我试过了:
string in = "aegan check mark = \u10102";
Run Code Online (Sandbox Code Playgroud)
据我所知,应该输出.但是当我打印出来时,我得到了ᴶ0
我错过了什么?
编辑:
我通过添加前导零来实现它:
string in = "\U00010102";
Run Code Online (Sandbox Code Playgroud)
希望我早点想到这个:)