format: show uint8_t as a number, not a char?
Dear All,
This does what I want:
uint8_t i = 65;
printf("i = %d\n",i);
It prints "65". This doesn't:
uint8_t i = 65;
cout << "i = " << i << "\n";
It treats i as a char, since uint8_t is a typedef for char deep in some
header file somewhere, and prints "A".
I was hoping that boost::format would do what I wanted:
uint8_t i = 65;
cout << boost::format("i = %d\n") % i;
But it seems to have the same, unwanted, behaviour as cout<
You can just cast the value to an int (in both the boost::format example, and in the iostreams example) to get what you want. (the varargs usage you demonstrate with printf is essentially a much more dangerous form of casting anyway). -- Brian On Dec 18, 2006, at 10:13 AM, Phil Endecott wrote:
Dear All,
This does what I want:
uint8_t i = 65; printf("i = %d\n",i);
It prints "65". This doesn't:
uint8_t i = 65; cout << "i = " << i << "\n";
It treats i as a char, since uint8_t is a typedef for char deep in some header file somewhere, and prints "A".
I was hoping that boost::format would do what I wanted:
uint8_t i = 65; cout << boost::format("i = %d\n") % i;
But it seems to have the same, unwanted, behaviour as cout<
Is there anything that I can do to my code to get the effect that I want? If not, is there anything that can be changed in boost::format to make it do what I want? At the moment I have to write things like
cout << "i = " << static_cast<unsigned int>(i) << "\n";
which is a lot of typing and obfuscates what is actually going on.
Any suggestions would be much appreciated.
Cheers,
Phil.
_______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users
participants (2)
-
Brian Crowder
-
Phil Endecott