我正在使用C ++读取大块文件。该文件包含整数,每行两个。
首先,我正在使用它来查找文件的长度:
input.seekg (0, input.end);
int length = input.tellg();
input.seekg (0, input.beg);
在那之后,我检查length是否大于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,则我使用其长度输入.read,并且工作正常。也许如果使用读取长度大于文件大小的文件使其无法正常工作?
非常感谢
您的字符串不是以NULL结尾的。该read()
函数不会'\0'
在为您读取的内容的末尾放置a ,因此,当您进行打印时,实际上是在打印超出所读取内容的末尾的垃圾数据,因为打印代码期望使用NULL终止符进行标记字符串的结尾。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句