我試圖從文件中讀取塊,並且出現問題。使用緩衝區來讀取未知大小的文件
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(好的),這樣可以確保程序不會使用無效數據。做到這一點,我將其標記爲可接受的答案。 – Erandros
@Erandos,不會工作,因爲那麼你又回到了第1位 - 你將不會處理最後一個分區塊!相反,如果有(i),也許可以添加,這樣如果有數據,那麼你只會做東西。 –
你說得對。我仍然認爲應該有一個「if(lessThanBufferSizeFlag)」。我不知道如何獲得那個標誌值。 – Erandros