How to output a character as an integer through cout?
c++, io, iostream, outputstream, type-conversion
Solution
char a = 0xab;
cout << +a; // promotes a to a type printable as a number, regardless of type.
This works as long as the type provides a unary `+` operator with ordinary semantics. If you are defining a class that represents a number, to provide a unary + operator with canonical semantics, create an `operator+()` that simply returns `*this` either by value or by reference-to-const.
source: Parashift.com - How can I print a char as a number? How can I print a char* so the output shows the pointer's numeric value?
Problem
``` #include <iostream> using namespace std; int main() { char c1 = 0xab; signed char c2 = 0xcd; unsigned char c3 = 0xef; cout << hex; cout << c1 << endl; cout << c2 << endl; cout << c3 << endl; } ``` I expected the output are as follows: ``` ab cd ef ``` Yet, I got nothing. I guess this is because cout always treats 'char', 'signed char', and 'unsigned char' as characters rather than 8-bit integers. However, 'char', 'signed char', and 'unsigned char' are all integral types. So my question is: How to output a character as an integer through cout? PS: static_cast(...) is ugly and needs more work to trim extra bits.