Это не так чисто, как хотелось бы, но вы можете изменить символ «заливка» на «0», чтобы выполнить работу:
your_stream << std::setw(2) << std::hex << std::setfill('0') << x;
Обратите внимание, однако, что символ, который вы установили для заливки, является «липким», поэтому после этого он будет оставаться «0», пока вы не восстановите его в пробел с чем-то вроде your_stream << std::setfill(' ');
.