Зачем вам это нужно?
Приведение указателей на необработанные данные в потоки означает побитовое копирование вашего ресурса и, следовательно, недостаточную производительность (и, кроме того, я не вижу никакой выгоды в этом подходе).
Если вы хотите работать с необработанной памятью, работайте с ней. Кастинг здесь (совместимость?) Кажется очень странным подходом.
Тем не менее, если вы хотите сделать это, вы можете создать некоторый поток из вашего блока памяти, который обрабатывает его как последовательность байтов. В данном случае это означает использование std::stringstream
(istringstream
).
После того, как вы заблокируете свой ресурс с помощью LockResource
, создайте строку из полученного указателя void*
и передайте ее в свой экземпляр stringstream
.
void* memory = LockResource(...);
// You would probably want to use SizeofResource() here
size_t memory_size = ... ;
std::string casted_memory(static_cast<char*>(memory), memory_size);
std::istringstream stream(casted_memory);