私は小さなプログラムを書いていますが、Mac OS と Ubuntu (Unix...) で見事に動作していました。プログラムは、データ ファイルを読み込み、バイト ( chars / unsigned chars) とmemcpy()それらを float に分離する必要があります。これには、たとえば次の 4 つの値を取得し、それらを読み取って 32 ビットに左シフトし、 s メモリを a にintコピーするプロセスが含まれます。そのようです:intfloat
0x43 0x66 0x1A 0x79 -> int32 と memcpy() を float に読み込む -> val = 230.103
前述したように、これは Unix では問題なく動作しますが、Windowschar 0x1Aはファイルの終わり (EOF) エラーを解釈し、データの読み取りを停止するようです。Windows がそのようなことを行い、Unix ではないのはなぜですか? どうすればオフにできますか?
ifstreamそれ自体を見て、EOLフラグが設定されているかどうかを確認して、エラー処理を試みました。次にclear()、ifstreamのエラーフラグを読み続けます(を使用get())が、いまいましいことは常に同じ EOF /0x1A文字を返し、次の文字を読みません。
編集:いくつかのコードを追加
ifstream input (PATH, ios::in);
if (input.is_open()) {
unsigned int counter = 0;
while (input.good()) {
BYTE byte;
byte = input.get();
printf("%i, ", byte);
counter++;
}
printf("\r%i, ", counter);
input.close();
} else {
printf("Can't open file!");
}
どんな助けでも大歓迎です。
マックス