gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 05:38:28 25 4
gpt4 key购买 nike

我正在读取一个带有 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 中!我不知道/不明白如何分别将代表 UTF-16 字符的 2 个字节放入 wstring?

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

最佳答案

每当您将数据存储在文件(例如文本文件)中时,您需要将其“序列化”为字节序列,并且当您读回它时,您需要将其反序列化为您的数据表示形式。

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

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

关于c++ - 按字节读取 UTF-16 格式的文件到 wstring,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32759519/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com