C++(VS2012)stdio:如果该字节为09h,则无法读取单字节文件

Yeg*_*gor 0 c++ stdio

代码很简单.

unsigned char a_byte;
ifstream a_file("C:/file.bin", ios_base::binary);
if (a_file.is_open() && a_file.good())
{
    a_file.seekg(0);
    a_file >> a_byte;
    a_file.close();
}
Run Code Online (Sandbox Code Playgroud)

问题是它不会从一个单字节文件读取09h - 我只是在a_byte var中得到零.它确实适用于不同的值.什么原因?

Bo *_*son 7

operator>>在读入目标变量之前,流类将跳过空格.这里的char值09h是TAB,它被计为空格并被跳过.

如果要读取每个字符,请尝试使用该get功能.