std 流写入 void* 并返回

std streams to write to void* and back

本文关键字:返回 void std      更新时间:2023-10-16

如何让 fstream 写入空指针?

基本上,我使用过MapFileView,并从中获得了共享内存的空指针。

我使用 copymemory 在两个单独的应用程序之间来回复制一堆数据。

现在,我想使用 std 库通过重载读取结构<<并将其写入我的映射内存(Local\MyMemMap,invalid_handle),然后通过重载读回>>。它不是您可以看到的物理文件。

基本上,如果可能的话,我想将ifstream和ofstream重定向到我的void*。否则,还有哪些其他 std 流允许我使用指针和运算符重载?

我只知道istream,osstream。

运算符<<和运算符>>用于格式化输入和输出。听起来您正在读取和写入原始字节。你应该使用 istream::read 和 ostream::write 来形容。

这是自 C++98 以来弃用 std::strstream 但尚未从 C++11 标准中删除的原因。对于它的大部分使用(std::stringstream),有一个更好的替代方案,但没有标准的替代品来替代使用固定缓冲区的可能性。你不必自己写std::streambuf,只需使用

#include <strstream>
std::strstream memostream(reinterpret_cast<char*>(mem), memsize, reinterpret_cast<char*>(mem));

将流写入内存定位为在开始时写入。和

std::strstream memistream(reinterpret_cast<char*>(mem), memsize);

用于在开始时进行流读取。

听起来您想编写一个自定义流来从映射的内存中读取和写入。此网页可能会有所帮助。