Скажите, что у меня есть dword. Я хочу вывести в шестнадцатеричном виде с std :: cout и левым pad с нулями, поэтому 0xabcd будет отображаться как 0x0000abcd. Похоже, что вы должны сделать это:Печать нулевого заполнения hex с std :: cout
uint32_t my_int = 0xabcd;
std::cout << "0x" << std::hex << std::setw(8) << std::setfill('0')
<< my_int << std::endl;
Это кажется смешным то, что может быть достигнуто в С printf("0x%08X\n", my_int);
. Есть ли способ сделать это короче при использовании std :: cout для вывода (помимо использования пространства имен std)?
Написать функцию вывода в виде форматированного шестнадцатеричном и назвать его. – GManNickG
Короче это относительная вещь, я полагаю. Если вы считаете, что код, стоящий за этим 'printf()', короткий, я могу заверить вас, что это ничего, кроме. Вам просто нужно бросить свой собственный (что будет выглядеть шокирующим, как у вас здесь). Вы всегда можете написать пару класса/оператора манипулятора, которая позволяет что-то вроде 'std :: cout << as_hex (n, 8,0);' – WhozCraig