如何在c++中通过一个cout语句计算中间零和前导零

How to cout middle zero with leading zero via one cout statement in C++?

本文关键字:语句 cout 一个 计算 中间 c++      更新时间:2023-10-16

我需要显示从包二进制数据(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

但是当我只使用一个计数行时,省略了'0x0'的前导零…

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

是否有任何方式显示像'123400005678'与一行计数?或者使用三次count是唯一的方法吗?

提前感谢。

字段宽度不是"sticky",所以您需要为打印出的每个字段重新设置:

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

123400005678

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

cout << setfill(' ');