如何使用MySQL的C ++连接器,用于存储二进制数据?
-
21-08-2019 - |
题
我有定义为二进制数据的块:
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()。
此致 伊罗何
不隶属于 StackOverflow