Abstract: I was expecting the code: cout << uint8_t(0); to print \"0\", but it doesn\'t print anything.
Long version: When I try to stream uint8_t objects
As others have pointed out, uint8_t
is streamed as an unsigned char
. I've sometimes made use of bit fields from integer types that are streamed as, well, integers, to avoid having to cast or overload operator<<
, but only when it doesn't waste space, like in the Pos struct below:
#include
struct WasteAbyte {
unsigned short has_byte_range:8;
};
struct Pos {
unsigned short x:8;
unsigned short y:8;
};
int main() {
WasteAbyte W = {255};
++W.has_byte_range;
std::cout << W.has_byte_range << std::endl;
std::cout << sizeof(WasteAbyte) << std::endl;
std::cout << sizeof(Pos) << std::endl;
return 0;
}
Output:
0
2
2