我有类似的东西
unsigned x = 16;
unsigned* p = &x;
std::cout << std::hex << std::setw(16) << std::setfill('0') << x << std::endl;
std::cout << std::hex << std::setw(16) << std::setfill('0') << p << std::endl;
Run Code Online (Sandbox Code Playgroud)
输出:
0000000000000010
000x7fffc35ba784
Run Code Online (Sandbox Code Playgroud)
ostream :: operator <<为此重载了吗?我可以用C正确地写这个,但我想知道是否有一种正确的方法来使用iostream.
使用 internal这样:
#include <iostream>
#include <iomanip>
int main()
{
unsigned x = 16;
unsigned* p = &x;
std::cout << std::hex << std::setw(16) << std::setfill('0') << x << std::endl;
std::cout << std::hex << std::setw(16) << std::setfill('0') << p << std::endl;
std::cout << std::internal << std::hex << std::setw(16) << std::setfill('0') << p << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
这给出了:
0000000000000010
000x7fffd123c1a4
0x007fffd123c1a4
Run Code Online (Sandbox Code Playgroud)