按字节顺序读取UTF-16格式的文件到wstring
Reading a UTF-16 formatted file bytewise to wstring
我正在读取一个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
!我不知道/理解我如何能得到那些分别2字节代表一个UTF-16字符成一个wstring?
我不能使用任何外部库!提前感谢您的帮助!
当您将数据存储在文件中(例如文本文件)时,您需要将其"序列化"为字节序列,当您读取它时,您需要将其反序列化为数据表示。
UTF-16文件遵循特定的二进制格式,该格式以字节顺序标记开始,然后后跟必须组合成wchar_t值的字节对。
我建议你首先以字节对读取数据(例如使用fgetc),并根据字节顺序将它们组合成wchar_t,例如wchar_t utf16 c = b1; c = c<<8 | b2
,然后在wstring上push_back。
相关文章:
- .cpp和.h文件中的模板专用化声明
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- 文本文件中的单词链表
- CMake-按正确顺序将项目与C运行时对象文件链接
- 使用新行和不使用新行读取文件
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 挂起和取消挂起一个文件DLL
- 如何确定我已使用非编码文件到达 EOF?
- 命名空间中具有.h和.cpp文件的类
- 如何使用ndk-build.cmd构建Android.so文件
- TinyXml:从XML文件中读取wstring
- 如何附加 wstring 并将其写入文件
- 如何将包含不同语言的wstring行写入文件
- 为什么std::wofstream不将所有wstring打印到文件中
- Boost错误:Boost.文件系统V3及更高版本需要std::wstring支持
- C++:将文件内容读取到wstring中
- 读取Unicode UTF-32文件到wstring
- 按字节顺序读取UTF-16格式的文件到wstring
- 如何使用wstring重命名文件
- 如何使用wfstream将UTF-16文件读取到wstring中