我有一个简单的问题要问。我有一个以 FFFE 开头的 UTF 16 文本文件要读取。有哪些C++工具可以处理这种文件?我只想阅读它,过滤一些行,然后显示结果。
看起来很简单,但我只有处理普通 ascci 文件的经验,而且我很着急。我正在使用 VS C++,但我不想使用托管 C++。
问候
这里举一个非常简单的例子
wifstream file;
file.open("C:\\appLog.txt", ios::in);
wchar_t buffer[2048];
file.seekg(2);
file.getline(buffer, bSize-1);
wprintf(L"%s\n", buffer);
file.close();
既然你很赶时间,就以二进制模式使用 ifstream 并完成你的工作。我和你遇到了同样的问题,这拯救了我的一天。 (这不是推荐的解决方案,当然,它只是一个 hack)
ifstream file;
file.open("k:/test.txt", ifstream::in|ifstream::binary);
wchar_t buffer[2048];
file.seekg(2);
file.read((char*)buffer, line_length);
wprintf(L"%s\n", buffer);
file.close();
就其价值而言,我想我已经读到您必须使用允许您指定编码的 Microsoft 函数。
https://learn.microsoft.com/en-us/cpp/c-runtime-library/reference/fopen-s-wfopen-s
FFFE只是最初的BOM(字节顺序标记)。就像平常一样从文件中读取,但读取到宽字符缓冲区中。