如何让fstream写入void指针?
基本上我已经使用了MapFileView并从共享内存中获取了一个void指针。
我使用copymemory在两个独立的应用程序之间来回复制一堆数据。
现在,我想使用std库通过<<读取结构。重载并将其写入我的映射内存(Local \ MyMemMap,invalid_handle),然后通过>>读回来超载。它不是您可以看到的物理文件。
基本上我想将ifstream和ofstream重定向到我的void *,如果可能的话。否则,其他什么标准流将允许我使用我的指针和运算符重载?
我只知道istream,osstream。
答案 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);
用于读取其开头的流。