我正在使用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