首先,如果我对这个问题出错了,那就很抱歉。我一直在寻找两天如何做到这一点,我找不到任何东西。如果这是一个愚蠢的问题,请再次抱歉,但我从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>*}’
提前感谢您的帮助
答案 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