由于某些奇怪的原因,当我的文件的字节数太大时,会在停止读取正确数据的地方发生此错误。就好像缓冲区在某个时刻停止接收数据一样。
我尽可能地简化了我的代码以确定问题,但我已经意识到它不是我的代码,但可能是某个地方的缓冲区?
如果我的文件是14,034字节,我运行这个简单的代码:
ifstream inFile("text.txt"); //File is 14,034 bytes
char test;
while(inFile >> test) //This will stop looping at about the 768 - 769 loop
cout << test;
如果我强制它继续使用for循环,结果是相同的:
ifstream inFile("text.txt"); //File is 14,034 bytes
char test;
for(int count = 0; count < 14034; ++count) //The loop will continue until the
test = inFile.get(); //end, but for whatever reason,
cout << test; //inFile stops at 768 - 769 again
现在:如果我使用相同的代码,但对于较小的文件(比如900字节),我似乎没有 那个问题。
完全相同的代码,只是不同的文件大小
ifstream inFile("text.txt"); //File is 900 bytes
char test;
while(inFile >> test) //This loop will continue to the 900th loop without
cout << test; //problems.
完全相同的代码,只是不同的文件大小
ifstream inFile("text.txt"); //File is 900 bytes
char test;
for(int count = 0; count < 900; ++count) //The loop will continue until the
test = inFile.get(); //end (900) without problems.
cout << test;
我在Google上搜索过我的问题,但一直无法找到解决方案。我遇到类似问题的唯一其他线程是这一个:
fopen - can't write more than 16K?
但即便如此,没有人真正明白他们在谈论什么 - 所以问题在技术上没有答案。
答案 0 :(得分:2)
看起来您想要以二进制模式读取文件,您可以按照以下方式执行此操作:
std::ifstream file("test.txt", std::ios::binary);
char byte;
while(file.read(&byte, 1)){
// Do something with byte
}