我无法在Visual Studio 2010的C++中将大文件读入我自己的缓冲区中。下面是我的代码片段,其中长度是我正在读取的文件的大小,bytesRead在运行之前设置为0,并且文件是std :: ifstream。C++读取()问题
buffer = new char[length];
while(bytesRead < length){
file.read(buffer + bytesRead, length - bytesRead);
bytesRead += file.gcount();
}
file.close();
我注意到,gcount的()在第二次读取返回0及以后,意思就是阅读()没有给我任何新角色,所以这是一个无限循环。我想继续阅读文件的其余部分。我知道即使文件中有更多数据,eofbit也会在第一次读取后设置。
我不知道我能做些什么来阅读更多。请帮忙。
为什么你不检查错误?为什么'gcount'返回0? – littleadv
我知道eofbit已设置,但实际上文件中有更多数据。我会将这些信息添加到问题中。 – Aura
用第二个参数'(std :: ios_base :: in | std :: ios_base :: binary)打开文件' –