如何通过 C++ 中的一个 cout 语句来计算中间零和前导零?
How to cout middle zero with leading zero via one cout statement in C++?
我需要显示从数据包二进制数据 (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 行时,'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 三次才能做到这一点?
提前致谢。
字段宽度不是 "sticky",因此您需要为打印出的每个字段重新设置它:
cout << hex << setfill ('0') << setw (4) << k << setw(4) << l << setw(4) << m << endl;
结果:
123400005678
填充字符 是 粘性的,因此您通常希望在使用完任何其他值后立即将其设置回 space 字符设置:
cout << setfill(' ');
我需要显示从数据包二进制数据 (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 行时,'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 三次才能做到这一点?
提前致谢。
字段宽度不是 "sticky",因此您需要为打印出的每个字段重新设置它:
cout << hex << setfill ('0') << setw (4) << k << setw(4) << l << setw(4) << m << endl;
结果:
123400005678
填充字符 是 粘性的,因此您通常希望在使用完任何其他值后立即将其设置回 space 字符设置:
cout << setfill(' ');