C++ アダプターを介して mySQL の Blob に格納したいメモリ ブロック (不透明) があります。アダプターは istream を予期します。
virtual void setBlob(unsigned int parameterIndex, std::istream * blob) = 0;
したがって、私の質問は、このメモリ ブロック (char* として入力) から std::istream を作成するにはどうすればよいかということです。null で終了していないため、文字列ではありません (もちろん、その長さはわかっています)。
たとえば std::string にメモリ ブロックをコピーせずにそれを行う方法を見つけることができませんでした。これはちょっともったいないと思います。このようなものは機能しません:
std::streambuf istringbuf(blockPtr, blockLength);
std::istringstream tmp_blob(&istringbuf);
std::streambuf にはそのようなコンストラクタがないためです。次の提案を見ました。
std:: istringstream tmp_blob;
tmp_blob.rdbuf()->pubsetbuf(blockPtr, blockLength);
それは正しい方法ですか?