我有定义为二进制数据的块:

void *的地址,为size_t binarySize;

,我想存储到使用MySQL C ++连接器MySQL数据库。

该函数的setBlob()采用的IStream。

<强>的问题:

如何从原始空隙*地址转换,为size_t binarySize要么IStream对象或istringstream?是否有可能做到这一点没有“复制”的数据?即告诉的IStream指针和大小,以便它可以指向它。

有帮助吗?

解决方案

您有子类流缓冲例如像这样:

class DataBuf : public streambuf
{
public:
   DataBuf(char * d, size_t s) {
      setg(d, d, d + s);
   }
};

然后,可以实例化其使用DATABUF作为缓冲区,它本身使用的二进制数据的块的istream对象。假设binarySize指定的二进制数据的字节大小(的sizeof(char)的应该是一个字节),你可以这样做,像这样:

DataBuf buffer((char*)address, binarySize);
istream stream(&buffer);

这IStream对象你现在可以传递给的setBlob()。

此致 伊罗何

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top