使用std :: cout时如何模拟printf的%p格式?

kag*_*san 18 c++ gcc iostream

unsigned char *teta = ....;
...
printf("data at %p\n", teta); // prints 0xXXXXXXXX
Run Code Online (Sandbox Code Playgroud)

如何使用iostreams 打印变量地址?有吗std::??? 功能就像std::hex做这种转换(地址 - >字符串),那么std::cout << std::??? << teta << std::endl会打印那个地址吗?

(没有sprintf的,请;))

Xeo*_*Xeo 27

演员void*:

unsigned char* teta = ....;
std::cout << "data at " << static_cast<void*>(teta) << "\n";
Run Code Online (Sandbox Code Playgroud)

iostreams通常假设你有一个带有任何char*指针的字符串,但是一个void*指针只是一个地址(简化),所以除了将该地址转换为字符串而不是该地址的内容之外,iostreams不能做任何事情.