2

I have:

std::cout << "Start = " << std::dec << (&myObject) << std::endl;

to output an address in decimal. However, the address is still coming out in hex??

(I am outputting one of these for each of ten members, so I don't want to assign each one to a variable and then std::dec the variable separately)

user997112
  • 29,025
  • 43
  • 182
  • 361

1 Answers1

8

The hex and dec manipulators are for integers, not pointers. Pointers are always rendered in the form that printf's %p formatter would have used on your system (which is, usually, hexadecimal notation).

This helps to emphasise the fact that pointers and numbers are distinct. You may consider it to be one of the rare cases in which number semantics and number representation are, to some degree, coupled.

The best you can do is to cast the pointer to uintptr_t before streaming it:

std::cout << "Start = " << std::dec << uintptr_t(&myObject) << std::endl;

…but please consider whether you really need to do so.

Lightness Races in Orbit
  • 378,754
  • 76
  • 643
  • 1,055