Как вырезать средний ноль с ведущим нулем с помощью одного оператора cout в 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

Есть ли в любом случае отображать как «123400005678» с одной строчкой Cout?
Или использовать cout три раза только для этого?

Заранее спасибо.

2

Решение

Ширина поля не является «липкой», поэтому вам нужно установить ее заново для каждого распечатываемого поля:

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

Результат:

123400005678

Заполняющий символ является однако, как правило, вы захотите установить его обратно в пробел, как только закончите, используя любое другое значение, которое вы установили:

cout << setfill(' ');
3

Другие решения


По вопросам рекламы [email protected]