これはかなり一般的なはずですが、私はそれがまっすぐな解決策を見つけることができなかったことを魅了しています。C++ stl stringstreamダイレクトバッファアクセス
基本的に私はネットワーク上のファイルを文字列ストリームに読み込みました。これは宣言です:
std::stringstream membuf(std::ios::in | std::ios::out | std::ios::binary);
は、今私は、メモリの読み出しチャンクへの直接アクセスを望んでいるいくつかのCライブラリを持っています。それをどうやって得るのですか?読み取り専用アクセスはOKです。 Cの機能が完了した後、私はmemorystreamを処分します。それは必要ありません。
str()
は、バッファをコピーします。これは不要と思われ、メモリを2倍にします。
明らかなものがありませんか?たぶん異なるstlクラスがうまくいくでしょう。
: 明らかに、stringstreamは連続して格納されているとは限りません。何ですか?
私が使用している場合vector<char>
どのようにバイトバッファを取得しますか?
'vector'はすべての要素を連続して格納するので、次のように" buffer "を得ることができます: –
@Steve Guidi:何バイトになるのか分からない限り'ベクトル'は 'std:stringstream'よりも多くのコピーを作成することがあります。なぜなら、そのデータを追加してコピーして、ストレージを連続した状態に保つためです。 –
これは役立つのですか?http://stackoverflow.com/questions/132358/how-to-read-file-content-into-istringstream/138645#138645 –