C ++ (VS2012) stdio: невозможно прочитать однобайтовый файл, если этот байт равен 09h

Код очень прост.

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();
}

Проблема в том, что он не читает 09h из однобайтового файла — я просто получаю ноль в переменной a_byte. Это работает с разными значениями. В чем причина?

0

Решение

Потоковые классы operator>> пропустит пробел перед чтением в целевую переменную. Здесь значение char 09h TAB, который считается пробелом и пропускается.

Если вы хотите прочитать каждый символ, попробуйте get функция.

7

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]