【问题标题】:C++11: istream.get() stops on EOMC++11:istream.get() 在 EOM 上停止
【发布时间】:2014-12-01 14:24:37
【问题描述】:

我对 c++(11) 输入流,特别是文件流有疑问。在我用这个打开一个新流之后:

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

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

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

然后我这样检查:

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

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

【问题讨论】:

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


【解决方案1】:

改为将文件作为二进制流打开:

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

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

【讨论】:

    猜你喜欢
    • 2014-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-07
    • 2018-05-11
    • 1970-01-01
    相关资源
    最近更新 更多