C ++ 11:istream.get()在EOM上停止

时间:2014-12-01 14:24:37

标签: c++ c++11 binary istream

我遇到了c ++(11)输入流的问题,特别是文件流。用这个打开一个新流后:

ifstream stream;
stream.open("C:\somefile.txt");

当我尝试从它读取并且读取操作遇到并且EOM字节(0x19)时,流被设置为badbit,这不是我想要的。我想阅读直到文件的definit结束。这是我读的方式

char buffer[8];
stream.read(buffer, 8);

然后我这样检查:

if(stream.fail()) return -1;

如何在不停止EOM字节(或等于)的情况下从流中读取?

1 个答案:

答案 0 :(得分:2)

以二进制流的形式打开文件:

ifstream stream{ "C:\\somefile.txt", std::ios::binary };

这会导致流在读取时忽略单个字节的值(并简单地读取为块)。