我已经在Windows XP和Visual Studio中使用c ++语言对应用程序进行了编程。

在该应用程序中,我使用LoadResource()API加载了资源,以便在资源内存中提供文件。

它返回了内存块的指针,我想将指针转换为std流以用于兼容性。

有人可以帮我吗?

最佳答案

你为什么需要这个?

将原始数据指针转换为流意味着对资源进行逐字节复制,因此,性能下降(而且,我也看不出这种方法有什么好处)。

如果要使用原始内存,请使用原始内存。在此处进行铸造(兼容性?)似乎是一种非常奇怪的方法。

不过,如果您想这样做,则可以从内存块中创建一些流,将其视为字节序列。在这种情况下,这意味着使用std::stringstreamistringstream)。

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);

关于c++ - 如何将内存块的指针转换为标准流,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2855874/

10-11 23:20
查看更多