0

如何让 fstream 写入 void 指针?

基本上我已经使用了 MapFileView 并从中获得了一个用于共享内存的 void 指针。

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

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

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

我只知道istream,osstream。

4

3 回答 3

3

operator<< 和 operator>> 用于格式化输入和输出。听起来您正在读取和写入原始字节。您应该为此使用 istream::read 和 ostream::write 。

于 2012-08-12T05:28:55.883 回答
1

这就是std::strstream自 C++98 以来不推荐使用但尚未从 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);

在它开始时读取流。

于 2012-08-12T07:44:02.333 回答
0

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

于 2012-08-12T05:33:37.937 回答