为什么设置failbit()?

时间:2014-04-10 12:25:05

标签: c++ istream

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

dd if=/dev/zero of=/tmp/zeroes count=1

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

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

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

    assert( !reader.fail() );
}

为什么断言被触发?

1 个答案:

答案 0 :(得分:8)

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