按字节读取 UTF-16 格式的文件到 wstring

Reading a UTF-16 formatted file bytewise to wstring

我正在读取一个带有 fread bytewise 的 UTF-16 格式文件,并希望将结果存储到 std::wstring 中。到目前为止,我能够读取文件:

char* path = "Some_Path_To_a_UTF-16_File"
char buffer[buffersize];

FILE* handle = fopen(path, "rb");
fread(buffer, 1, 100, handle);

在此之后,我将文件的(部分)字节存储在 buffer(包括 BOM)中。

现在回答我的实际问题:我想将刚刚读取的数据存储到 std::wstring 中!我不知道 know/understand 我如何才能分别将代表 UTF-16 字符的 2 个字节放入 wstring?

我无法使用任何外部库!提前感谢您的帮助!

无论何时将数据存储在文件(例如文本文件)中,您都需要将其 "serialize" 转换为一个字节序列,并且当您读回它时,您需要将其反序列化为您的数据表示形式。

UTF-16 文件遵循特定的二进制格式,该格式以 byte order mark 开头,然后是必须组合成 wchar_t 值的字节对。

我建议您首先以字节对(例如使用 fgetc)读取数据,然后根据字节顺序将它们组合成 wchar_t,例如wchar_t utf16 c = b1; c = c<<8 | b2,然后在 wstring 上 push_back。