我正在使用C++以塊讀取文件。 該文件包含整數,每行兩個。Ifstream讀取無用數據
首先,我用這個來找到該文件的長度:
input.seekg (0, input.end);
int length = input.tellg();
input.seekg (0, input.beg);
在那之後,我是否長度是大於CHUNKSIZE,如果這是真的,我分配內存塊...
char * buffer = new char [chunksize];
好了,所以在這裏不用讀取功能...
while (true)
{
input.read (buffer,chunksize);
cout<<buffer;
if(input.eof()) break;
}
緊接着,我以後delete [] buffer;
不過,我面臨着與此代碼的問題。例如,當輸入文件是這樣的:
2 5
4 5
6 8
7 5
4 2
1 2
程序將不能輸出預期的字符,但這樣的:
2 5
4 5
6 8
7 5
4 2
1 2 2
1 2
你知道這些額外的字符的原因是什麼?如果文件的大小小於chunksize,我input.read使用它的長度,它工作得很好。也許如果使用讀取與長度大於文件的大小使其無法正常工作?
非常感謝
這與'c'有什麼關係? – luk32
哎呀抱歉...我盲目地按下建議的c標籤.... – user2455103
[不要迭代'eof()'](http://stackoverflow.com/questions/5605125/why-is-iostreameof - 內部-A-循環條件考慮的,是錯誤的)。這會導致您的重複上次輸出。 – Angew