十六进制0x00的std :: cout

时间:2016-03-10 15:39:59

标签: c++ hex iostream iomanip

我要在标准输出上打印一些std::uint16_t值作为十六进制,并使用以下文本格式:0x##。 我发现这个在线代码适用于除0以外的所有值:

std::cout << std::internal 
          << std::setfill( '0' ) 
          << std::hex 
          << std::showbase 
          << std::setw( 4 ) 
          << value << std::endl;

由于某些原因我不明白,0打印为0000。 所有其他值都按预期正确打印。

1 个答案:

答案 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