Считать один байт из файла

182
16 марта 2018, 13:59

Как считать один байт из файла? Следующий код работает, но некоторые байты пропускаются (0x09, 0x0a, 0x0b, 0x0c, 0x0d) и считывается следующий за ними байт.

ifstream file(fileName, std::ios_base::in | std::ios_base::binary);
uint8_t s;
file >> s;

Пытался еще сделать вот так,

file.readsome(&s, 1);

но uint8_t* не кастится к char*. Использую именно uint8_t потому, что насколько я знаю стандартом размер char-а не регламентирован.

В чем проблема?

Answer 1

Я бы использовал char (чтоб он был не байтом - это надо потрудиться такое найти...) Тогда

file.get(char&);
или
file.read(char*,1);

Ну, а если строго uint8_t (который, готов спорить, у вас он просто unsigned char... если нет - то даже интересно, с чем вы таким имеете дело) - то

file.read(reinterpret_cast<char*>(&s),1);
Answer 2

ASCII

  • 0x09 - горизонтальная табуляция (\t)
  • 0x0a - перевод строки (\n)
  • 0x0b - вертикальная табуляция
  • 0x0c - «прогон страницы», новая страница - команда для принтера начать печать с новой страницы
  • 0x0d - возврат каретки (\r)

Выглядит так, как-будто вы читаете всё таки текстовый файл как текст, может быть оставить в конструкторе только std::ifstream::binary?

В крайнем случае всегда есть сишный fread().

READ ALSO
Проблема GROUP BY в SQL Server HIBERNATE

Проблема GROUP BY в SQL Server HIBERNATE

Я не могу решить ошибку

187
Не могу подключить proxy к selenium

Не могу подключить proxy к selenium

Мне нужно подключить прокси с авторизацией, я только разобрался с работой selenium, думал и с этим разберусь, но ничего не выходитВроде бы как...

186
Как обработать картинку?

Как обработать картинку?

Обработкой картинок не занималсяЕсть картинка - на белом фоне синие точки

134
Java и pmnl файл

Java и pmnl файл

Есть файл pmnl в котором хранится сеть петриКак можно её загрузить и анализировать в java

152