我有一个简单的问题要问。我有一个UTF 16文本文件,以FFFE开头。有哪些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();
答案 0 :(得分:2)
您可以使用fgetws,它读取16位字符。您的文件是little-endian,字节顺序。由于x86机器也是little-endian,你应该能够轻松处理文件。如果要进行输出,请使用fwprintf。
此外,我同意更多信息可能有用。例如,您可能正在使用一个抽象出其中一些内容的库。
答案 1 :(得分:2)
由于您处于匆忙状态,请在二进制模式下使用ifstream并完成工作。我和你有同样的问题,这节省了我的一天。 (这不是推荐的解决方案,当然,它只是一个黑客攻击)
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();
答案 2 :(得分:1)
对于它的价值,我想我已经读过你必须使用允许你指定编码的微软功能。
http://msdn.microsoft.com/en-us/library/z5hh6ee9(VS.80).aspx
答案 3 :(得分:0)
FFFE只是初始BOM(字节顺序标记)。只需像往常一样从文件中读取,但是进入宽字符缓冲区。