私は小さなプログラムを書いていますが、Mac OS と Ubuntu (Unix...) で見事に動作していました。プログラムは、データ ファイルを読み込み、バイト ( char
s / unsigned char
s) とmemcpy()
それらを float に分離する必要があります。これには、たとえば次の 4 つの値を取得し、それらを読み取って 32 ビットに左シフトし、 s メモリを a にint
コピーするプロセスが含まれます。そのようです:int
float
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!");
}
どんな助けでも大歓迎です。
マックス