В зависимости от того, хотите ли вы использовать дополнительные параметры форматирования, которые предоставляет printf, вы можете использовать sprintf
Таким образом, вы можете отформатировать строку точно так же, как в printf, а затем распечатать ее с помощью std::cout
Однако, это будет связано с использованием временного массива char, поэтому выбор зависит.
Пример:
unsigned char *teta = ....;
...
char formatted[ 256 ]; //Caution with the length, there is risk of a buffer overflow
sprintf( formatted, "data at %p\n", teta );
std::cout << formatted;