假设我有一个dword数值想要用std::cout输出16进制格式并且左侧补零,以便0xabcd被显示为0x0000abcd。看起来你需要这样做:
uint32_t my_int = 0xabcd;
std::cout << "0x" << std::hex << std::setw(8) << std::setfill('0')
<< my_int << std::endl;
使用C语言中的printf("0x%08X\n", my_int);
即可轻松完成此操作,因此这似乎有些荒唐。除了使用using namespace std;
之外,是否有其他方法可以更短地使用std::cout输出?
printf()
背后的代码很短,那我可以向你保证它绝非如此。你只需自己编写(看起来与这里的代码极为相似)。您可以编写一个操作符对/操作类,允许像std::cout << as_hex(n,8,0);
这样的输出。 - WhozCraig#define PAD_HEX(digits) std::hex << std::setw(digits) << std::setfill('0')
,然后在代码中稍后使用它,如std::cout << "0x" << PAD_HEX(8) << my_int ..
。 - erco