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

C++ C++;11:istream.get()在EOM上停止,c++,c++11,binary,istream,C++,C++11,Binary,Istream,我对c++(11)inputstreams有一个问题,特别是filestreams。在我打开一个新的流之后: ifstream stream; stream.open("C:\somefile.txt"); 当我尝试从中读取时,读取操作遇到EOM字节(0x19),流被设置为badbit,这不是我想要的。我想一直读到文件的结尾。我就是这样读的 char buffer[8]; stream.read(buffer, 8); 然后我检查如下: if(stream.fail()) return -1

我对c++(11)inputstreams有一个问题,特别是filestreams。在我打开一个新的流之后:

ifstream stream;
stream.open("C:\somefile.txt");
当我尝试从中读取时,读取操作遇到EOM字节(0x19),流被设置为badbit,这不是我想要的。我想一直读到文件的结尾。我就是这样读的

char buffer[8];
stream.read(buffer, 8);
然后我检查如下:

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

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

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

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

这将导致流在读取时忽略单个字节的值(并且只是作为块读取)。

文件有多大?也许您已经尝试从文件末尾以外的位置读取了?你能帮我们做一个简单的示范吗?