Alex Rivera | Logout

How to simulate printf's %p format when using std::cout?

Asked 2011-04-14T00:06:22.953
20
unsigned char *teta = ....;
...
printf("data at %p\n", teta); // prints 0xXXXXXXXX

How can I print variable address using iostreams? Is there a std::??? feature like std::hex to do this kind of conversion (address -> string), so std::cout << std::??? << teta << std::endl will print that address?

(no sprintf's, please ;))

Edit
Report

1 Answer

1

Depending on wheter or not you want to use more formatting options printf gives, you could consider using sprintf

By it, you could format a string just like you'd do with printf, and afterwards print it out with std::cout

However, this would involve using a temporary char array so the choice depends.

An example:

unsigned char *teta = ....;
...
char formatted[ 256 ]; //Caution with the length, there is risk of a buffer overflow
sprintf( formatted, "data at %p\n", teta );
std::cout << formatted;
answered 2011-04-14T00:15:01.133

Your Answer