我有一个内存块(不透明),我想通过MySQL的C++适配器将其存储在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);
这是正确的方式吗?