You're right! That's the thing with C++ - you learn something new everyday.
I had misread your original post. I thought the example was something like "std::cout << 97".
This is unfortunate. I imagine it came about when "cstdint" was introduced. Fixing it would require a break in compatibility with any existing code that "expected" that all char types printed a character, rather than value.