std :: oct Устанавливает флаг формата базового поля для потока str в октаву.
std :: setbase Устанавливает флаг формата базового поля в одно из возможных значений: шестнадцатеричное, десятичное или октальное в зависимости от значения базового параметра.
Я думаю, что большая разница в том, что setbase принимает аргумент, чтобы вы могли передать ему переменную, содержащую нужную вам числовую базу. Вместо набора операторов if для проверки переменной и использования dec, oct или hex.
Я не уверен насчет std :: cout.oct.