std流写入void *并返回

时间:2012-08-12 04:55:44

标签: c++

如何让fstream写入void指针?

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

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

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

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

我只知道istream,osstream。

3 个答案:

答案 0 :(得分:2)

运营商LT;<和运算符>>用于格式化输入和输出。听起来像是在读写原始字节。你应该使用istream :: read和ostream :: write。

答案 1 :(得分:1)

听起来您想要编写自定义流来从映射内存中读取和写入。这web page可能会有所帮助。

答案 2 :(得分:0)

这是自98以来不推荐使用strstream但未从11标准中删除的原因。对于它的大多数使用(stringstream)有一个更好的选择,但没有标准替代使用固定缓冲区的可能性。您不必编写自己的streambuf,只需使用

即可
#include <strsteam>

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

将一个流写入您的内存,以便在开始时进行写入。和

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

用于读取其开头的流。