对于cout,很多用习惯了C语言的printf的人们,多少对cout都是敬而远之。因其复杂繁多的格式控制操纵符,确实带来了记忆上的负担,但是较printf来说,cout的类型自动检查带来的安全性是printf无法比拟的。
网上关于cout输出格式控制的资料多入繁星,但是对于特殊的、非常见输出格式例子却很少。下面就列举本人实际遇到的输出难点。
C语言方式:
printf("%#010x",0xff);//输出结果为:0x000000ff
//或者
printf("%#08p",0xff);//输出结果为:0X000000FF
cout输出:
//setw、setfill和resetiosflags需要包含头文件<iomanip>
cout<<"0x"<<setw(8)<<setfill('0')<<hex<<0xff<<endl;//输出结果:0x000000ff
//如果恢复hex为默认使用如下情况
cout<<resetiosflags(ios::hex)<<100<<endl; //正常输出100,不是0x64