0

fstream で void ポインターに書き込むにはどうすればよいですか?

基本的に私は MapFileView を使用し、そこから共有メモリ用の void ポインターを取得しました。

私は copymemory を使用して、2 つの別々のアプリケーション間で大量のデータをコピーしました。

代わりに、std ライブラリを使用して << オーバーロードを介して構造体を読み取り、マップされたメモリ (Local\MyMemMap、invalid_handle) に書き込み、>> オーバーロードを介して読み返します。見ることができるのは物理的なファイルではありません。

基本的に、可能であれば ifstream と ofstream を void* にリダイレクトしたいと考えています。それ以外の場合、ポインターと演算子のオーバーロードを使用できる他の std ストリームは何ですか?

私はistream、osstreamしか知りません。

4

3 に答える 3

3

operator<< および operator>> は、フォーマットされた入力および出力用です。生のバイトを読み書きしているように聞こえます。そのためには、istream::read と ostream::write を使用する必要があります。

于 2012-08-12T05:28:55.883 に答える
1

これが、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);

開始時のストリーム読み取り用。

于 2012-08-12T07:44:02.333 に答える
0

マップされたメモリから読み書きするカスタム ストリームを書きたいようです。このWeb ページが役立つ場合があります。

于 2012-08-12T05:33:37.937 に答える