【发布时间】:2016-03-10 15:39:58
【问题描述】:
我必须在标准输出上打印一些 std::uint16_t 值作为十六进制格式,文本格式如下:0x##。
我在网上找到了这段代码,它适用于除0 之外的每个值:
std::cout << std::internal
<< std::setfill( '0' )
<< std::hex
<< std::showbase
<< std::setw( 4 )
<< value << std::endl;
出于某种我不明白的原因,0 被打印为0000。
所有其他值都按预期正确打印。
【问题讨论】:
-
正如Notes section here 中所见,这是一个深思熟虑的选择。如何绕过它?不确定,恐怕,从来不需要。听起来您可能需要开始创建自己的
num_put,这在谚语中很痛苦。 -
每个问题一个问题。
-
我相当肯定程序员设计了这个系统(“零在每个基础上都是一样的,有什么问题?”)。我认为
... << "0x" << setw(2) << ...应该可以工作。