c++ - 如何通过 C++ 中的一个 cout 语句计算中间零和前导零?

标签 c++ leading-zero

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

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

使用cout 3次即可显示四位十六进制值。

#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行时,'0x0'的前导零被省略......

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

oneline cout
123405678

有没有办法用一行cout来显示“123400005678”? 或者使用 cout 三次是唯一的方法吗?

提前谢谢您。

最佳答案

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

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

结果:

123400005678

填充字符是粘性的,因此您通常希望在使用您设置的任何其他值后立即将其设置回空格字符:

cout << setfill(' ');

关于c++ - 如何通过 C++ 中的一个 cout 语句计算中间零和前导零?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30565911/

相关文章:

c++ - retranslateUi() 清除 QLabel 文本

c++ - FPS 相机实现错误(OpenGL/GLUT/C++)

c++ - 有趣的用例,其中常规数组不能代替 std::array

python - 更改 pandas 日期格式以删除前导零的更好方法?

python - 在 Python 上从十六进制字符串转换为 int 而不删除前导零

c++ - 无法从 dll 调用函数

c++ - RenderPass依赖关系和(过渡)内存屏障

php - 将使用 PHP 创建的 csv 文件导入 Excel 时,如何在数字字符串值中保留前导零?

c++ - 我可以给出一个流来在 C++ 中的数字上打印前导零的指令是什么?

c++将带有前导零的Int保存到String,而不显示它们