Поскольку void*
представляет необработанный блок памяти, невозможно определить, какие именно данные там находятся.
Однако вы можете создать «строковый» дамп памяти для каждой операции, простодать результирующему выводу своего рода «верхний предел вывода».
Это может быть реализовано следующим образом:
const size_t kUpperLimit = 32;
void output_memory_dump(void* memory) {
std::cout.write(reinterpret_cast<char*>(memory), kUpperLimit);
}
Для нестроковыхкак и данные, вывод будет трудно интерпретируемым, но в противном случае вы получите то, что искали.
Вы можете попытаться применить некоторый основанный на догадках подход, такой как итерация по reinterpret_cast<void*>(memory)
и создание is_alphanumeric && is_space
проверяет каждый символ, но этот подход не кажется очень стабильным (, кто знает, что на самом деле может лежать в этом void*
... ).
Во всяком случае, дляВ некоторых ситуациях это может быть хорошо.