"Правильно" довольно нетривиально на самом деле. В деталях описано в этой книге: http://www.angelikalanger.com/IOStreams/examples.htm. там же и примеры есть. Вот здесь - http://www.gotw.ca/publications/mill19.htm есть хорошее сравнение разных методов форматирования строк.
Ты ведь и свой манипулятор написать можешь без проблем. namespace mymanip { std::ostream& hexmode (std::ostream& strm) { return strm << std::hex << std::showbase; } std::ostream& nohexmode (std::ostream& strm) { return strm << std::dec << std::noshowbase; } } int main(int argc, char* argv[]) { #define IMAGE_NT_SIGNATURE 0x00004550 std::cout << mymanip::hexmode << IMAGE_NT_SIGNATURE << std::endl; std::cout << mymanip::nohexmode << IMAGE_NT_SIGNATURE << std::endl; return 0; } Вывод: