2014-11-07 2 views
-1

질문에 뭔가 잘못했다면 먼저 미안 해요. 나는 2 일 동안이 일을하는 법을 찾고 있었고 아무것도 찾을 수 없다. 그리고 죄송합니다 다시는 바보 질문 인 경우 만 임 C++unsigned char *를 istream으로 사용하십시오.

나는 개인적인 프로젝트를 진행하고 시작하여 내가 지문 인식기를 사용하려면, 그것은 내가 나에게이있는

BYTE *imageBuffer1 

을 제공합니다 이

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

같은 지문 정보를 가진 파일을하지만 mysqlcppconn와 MySQL을로 그 정보를 저장할 그러나 나는 성병에 */캐스트/사용하는 방법을 알아낼 바이트를 변환하지 못할 :: istream로 할 수 있습니다. 당신의 도움에 미리

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

이 목적으로 사용되지 않는 ['std :: istrstream'] (http://en.cppreference.com/w/cpp/io/istrstream)가 있습니다. – cdhowie

+0

[관련] (http://stackoverflow.com/questions/26418693/using-a-character-array-as-a-string-stream-buffer/26418951#26418951) – jrok

답변

0

표준 : 이제 stringstream은 당신이 원하는 일을해야을 : 나는

prepared_statemet->setBlob(1, minutiaeBuffer1); 

처럼 뭔가를하려고하면 는 컴파일러는 나에게 말한다 오류를 보냅니다 ....

#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

+1

이 (a)는 (b) 버퍼를'std :: string' 객체에 복사하는데, 이것은 원치 않을 수도 있습니다. – cdhowie

+0

@cdhowie'std :: string :: assign()'간접 참조가 해결되어야 함 _ (a) _ –

+1

@ πάνταῥεῖ 또는 길이를 지정하는 문자열을 구성하십시오. 'assign()'은 불필요한 추가 단계입니다. 어느 쪽이든, 여전히 버퍼를 복사해야합니다. – cdhowie

관련 문제