我有一个内存块(不透明),我想通过他们的 C++ 适配器将它存储在 mySQL 中的 Blob 中。适配器需要一个 istream:
virtual void setBlob(unsigned int parameterIndex, std::istream * blob) = 0;
所以我的问题是:如何从这个内存块(类型为 char*)创建一个 std::istream。它不是字符串,因为它不是以空值结尾的(但我当然知道它的长度)。
如果不复制我的内存块,例如在 std::string 中,我找不到一种方法。我觉得这有点浪费。像这样的东西不起作用:
std::streambuf istringbuf(blockPtr, blockLength);
std::istringstream tmp_blob(&istringbuf);
因为 std::streambuf 没有这样的构造函数。我看到了以下建议。
std:: istringstream tmp_blob;
tmp_blob.rdbuf()->pubsetbuf(blockPtr, blockLength);
这是正确的方法吗?