std::hex
возвращает вам шестнадцатеричное форматирование, но это опция с сохранением состояния, то есть вам нужно сохранить и восстановить состояние, или это повлияет на весь будущий вывод.
Наивное переключение обратно на std::dec
хорошо только в том случае, если флаги были там, где это было раньше, что может быть не так, особенно если вы пишете библиотеку.
#include <iostream>
#include <ios>
...
std::ios_base::fmtflags f( cout.flags() ); // save flags state
std::cout << std::hex << a;
cout.flags( f ); // restore flags state
Это объединяет ответ Грега Хьюгилла и информацию от другого вопроса .