7

簡単な質問があります。FFFEで始まるUTF16テキストファイルを読みます。この種のファイルを処理するための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();
4

4 に答える 4

2

16ビット文字を読み取るfgetwsを使用できます。ファイルはリトルエンディアン、バイト順です。x86マシンもリトルエンディアンであるため、ファイルを問題なく処理できるはずです。出力を行う場合は、fwprintfを使用してください。

また、より多くの情報が役立つ可能性があることに同意します。たとえば、この一部を抽象化するライブラリを使用している場合があります。

于 2009-05-23T13:04:09.233 に答える
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();
于 2009-05-23T14:31:04.020 に答える
1

その価値については、エンコーディングを指定できるMicrosoft関数を使用する必要があることを読んだと思います。

http://msdn.microsoft.com/en-us/library/z5hh6ee9(VS.80).aspx

于 2009-05-23T12:56:15.770 に答える
0

FFFEは、最初のBOM(バイト順マーク)にすぎません。通常どおりにファイルから読み取りますが、ワイド文字バッファに読み込みます。

于 2009-05-23T12:52:40.520 に答える