如何通过C ++中的一个cout语句来判断中零和前导零?

时间:2015-06-01 05:02:51

标签: c++ leading-zero

我需要显示三个从数据包二进制数据(0x123400005678)解析的值。

unsigned int k = 0x1234, l=0x0, m=0x5678;

当我使用cout三次时,我可以显示四位十六进制值。

#include <iostream>
#include <iomanip>
...
cout << "seperated cout" << endl;
cout << hex << setfill ('0') << setw (4) << k;
cout << hex << setfill ('0') << setw (4) << l;
cout << hex << setfill ('0') << setw (4) << m << endl;
....

seperated cout
123400005678

但是当我只使用一条cout线时,前导零为&#39; 0x0&#39;省略...

#include <iostream>
#include <iomanip>
...
cout << "oneline cout" << endl;
cout << hex << setfill ('0') << setw (4) << k << l << m << endl;
...

oneline cout
123405678

无论如何都要显示像&#39; 123400005678&#39;一线cout? 或者只使用cout三次这样做?

提前谢谢。

1 个答案:

答案 0 :(得分:3)

字段宽度不是“粘性”,因此您需要为打印的每个字段再次设置它:

cout << hex << setfill ('0') << setw (4) << k << setw(4) << l << setw(4) << m << endl;

结果:

123400005678

填充字符粘性的,所以你通常想在使用你设置的任何其他值时立即将它设置回空格字符:

cout << setfill(' ');