使用unsigned char *作为istream

时间:2014-11-07 20:11:43

标签: c++ mysql

首先,如果我对这个问题出错了,那就很抱歉。我一直在寻找两天如何做到这一点,我找不到任何东西。如果这是一个愚蠢的问题,请再次抱歉,但我从C ++开始

我正在开展个人项目,我想使用指纹识别器,它给了我一个

BYTE *imageBuffer1

有了这个,我可以用这样的指纹信息制作一个文件

fwrite (minutiaeBuffer1 , sizeof (BYTE) , templateSize , fp);

但是我想用mysqlcppconn将这些信息存储到mysql中,但我无法弄清楚如何使用/ cast /转换BYTE *到std :: istream。 当我尝试做类似

的事情
prepared_statemet->setBlob(1, minutiaeBuffer1);

编译器向我发送了一条错误消息:

main.cpp:229:39: error: no matching function for call to ‘sql::PreparedStatement::setBlob(int, BYTE*&)’
main.cpp:229:39: note: candidate is:
/usr/include/cppconn/prepared_statement.h:63:15: note: virtual void sql::PreparedStatement::setBlob(unsigned int, std::istream*)
/usr/include/cppconn/prepared_statement.h:63:15: note:   no known conversion for argument 2 from ‘BYTE* {aka unsigned char*}’ to ‘std::istream* {aka std::basic_istream<char>*}’

提前感谢您的帮助

1 个答案:

答案 0 :(得分:0)

std :: stringstream应该做你想要的......

#include <sstream>

BYTE *imageBuffer1; 
// where N is the desired number if bytes
std::stringstream minutiaeBuffer1( 
          std::string(reinterpret_cast<char*>(imageBuffer1),N)); 

prepared_statemet->setBlob(1, &minutiaeBuffer1);

编辑:输入缓冲区的长度限制为N