我要在标准输出上打印一些std::uint16_t
值作为十六进制,并使用以下文本格式:0x##
。
我发现这个在线代码适用于除0
以外的所有值:
std::cout << std::internal
<< std::setfill( '0' )
<< std::hex
<< std::showbase
<< std::setw( 4 )
<< value << std::endl;
由于某些原因我不明白,0
打印为0000
。
所有其他值都按预期正确打印。
答案 0 :(得分:1)
您的其他问题。 您只需要再次设置宽度。其余的操纵者都是持久的。
std::cout << std::internal
<< std::setfill( '0' )
<< std::hex
<< std::showbase ;
for(std::uint16_t i =1;i<255;++i){
std::cout<< std::setw( 4 )<<i<<"\n";
}
要克服setw
问题,请参阅以下解决方法:“Permanent” std::setw