为什么设置failbit()?

qdi*_*dii 4 c++ istream

创建一个文件并用零填充:

dd if=/dev/zero of=/tmp/zeroes count=1
Run Code Online (Sandbox Code Playgroud)

编写这个小程序来提取它在文件中遇到的第一个无符号整数.

#include <assert.h>
#include <fstream>

int main()
{
    std::ifstream reader( "/tmp/zeroes", std::ios_base::binary );
    uint32_t number;
    reader >> number;

    assert( !reader.fail() );
}
Run Code Online (Sandbox Code Playgroud)

为什么断言被触发?

Jam*_*nze 8

因为/dev/zero提供二进制零而不是字符 '0',并且>>(或尝试执行)从文本转换.