Поскольку uint8_t
также (вероятно) unsigned char
, для которого существуют специальные правила при выполнении форматированного извлечения из потока C ++.
К сожалению это просто псевдоним, а не отдельный тип .
По сути, он пропускает шаг "лексическое преобразование в число", потому что думает, что вы хотите вытащить символ.Символ 'a'
.
Я думаю, вы захотите прочитать в unsigned int
, а затем при необходимости уменьшить его.
Если вы уменьшите размер до uint8_t
, вы такжеЗатем мне придется повысить его до большего целого (смеется) по по той же причине , чтобы запустить сериализацию.
Если честно, я бы просто избегал небольших типов фиксированной ширины при работе с потоками (если только вы не выполняете неформатированную работу с read()
и write()
).Об этой проблеме слишком легко забыть.