문제

이진 데이터 블록이 다음과 같이 정의되어 있습니다.

void* 주소, size_t binarysize;

MySQL C ++ 커넥터를 사용하여 MySQL 데이터베이스에 저장하고 싶습니다.

함수 setBlob ()는 Istream을 취합니다.

질문:

RAW void* 주소에서 Size_T BinarySize에서 Istream 객체 또는 Istringstream으로 어떻게 변환 할 수 있습니까? 데이터를 "복사"하지 않고이 작업을 수행 할 수 있습니까? 즉, Istream에게 포인터와 크기를 지적 할 수 있도록 포인터를 말합니다.

도움이 되었습니까?

해결책

당신은 다음과 같이 subclass streambuf 예를 들어야합니다.

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

그런 다음 Databuf를 버퍼로 사용하는 IsTream 객체를 인스턴트하는데, 이는 이진 데이터 블록을 사용합니다. 이진 크기가 바이트 (char)의 이진 데이터의 크기를 지정한다고 가정하면 다음과 같이 할 수 있습니다.

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

이제 SetBlob ()로 전달할 수있는 Istream 객체.

안부, 엘로 히르

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top