Справочная информация:
У меня есть операторы потоков шаблонов (например, operator << (ostream &, std::vector <T>)
) (которые выводят элементы контейнера, которые могут иметь некоторый 8-битный целочисленный тип (например, unsigned char
, int_least8_t
и т. Д.)cetera).
Проблема:
По умолчанию эти типы выводятся как char
(ASCII). Я использовал char
(или wchar_t
или что-то еще) для переменных ASCII,никогда не подписывать / подписывать типы. Как я могу получить вместо этого эти другие 8-битные типы всегда как signed int
/ unsigned int
(числа), даже если вызывающий не знает тип?
Первые попытки:
Я пытался (с GCC), например, определить operator << (ostream &, unsigned char)
с приведением в нем (то есть stream << static_cast <int> (value)
. Это работает для unsigned char
значений, но затем uint8_t
по-прежнему получает вывод какa char
.
Тот же базовый тип (т. е. unsigned/signed char
не может использоваться при перегрузках, поэтому я не могу определить перегрузку, например, operator << (ostream &, int_fast8_t)
.