ファイルからブロックを読み取ろうとしていますが、問題があります。バッファを使用して不明なサイズのファイルから読み取る
char* inputBuffer = new char[blockSize]
while (inputFile.read(inputBuffer, blockSize)) {
int i = inputFile.gcount();
//Do stuff
}
は、私たちのブロックサイズが1024 bytes
あるとし、かつファイルが24,3 KiB
です。 23ブロック目を読んだら、読み返したのは0,3 KiB
です。私はまた、0,3 KiB
を読むことを望んでいます。実際にはgcount()
を使用していますので、バッファのどれがどれくらいか分かりました。read(...)
(それが少ない場合)
しかし、24番目のブロックにアクセスするとき、read(...)
は、ファイル内の残りの未読バイトのサイズがバッファサイズより小さいため、プログラムがループに入り込まないような値を返します。私は何をすべきか?
"okay = inputFile.read(...)"の後にif(okay)を含めて、プログラムが無効なデータで動作しないようにする必要があります。私はこれを受け入れられた答えとしてマークします。 – Erandros
@Erandos、それはあなたが正方形1に戻っているので動作しません - あなたは最後のサブブロックを処理しません!代わりにif(i)を追加すると、データがある場合にのみ実行します。 –
あなたはそうです。私はまだ "if(lessThanBufferSizeFlag)"があるはずだと思います。私はどのようにフラグ値を取得するか分からない。 – Erandros