나는 메모리 블록 (불투명)을 가지고 있는데, 이는 C++ 어댑터를 통해 mySQL에 Blob에 저장하려고한다. 어댑터는 IStream을 기대 :메모리 버퍼에서 C++ std :: istringstream을 초기화 하시겠습니까?
virtual void setBlob(unsigned int parameterIndex, std::istream * blob) = 0;
그래서 내 질문 :이 메모리 블록에서 표준 :: istream로를 만드는 방법 (숯불 *로 입력). null로 종료되지 않기 때문에 문자열이 아닙니다 (그러나 길이는 알고 있습니다).
예를 들어 std :: string과 같은 메모리 블록을 복사하지 않고도이를 수행 할 방법을 찾지 못했습니다. 나는 이것이 약간 낭비라고 생각한다. 이런 식으로 뭔가가 작동하지 않습니다
std::streambuf istringbuf(blockPtr, blockLength);
std::istringstream tmp_blob(&istringbuf);
표준 : streambuf의 나던 때문에 이러한 생성자가 있습니다. 나는 다음과 같은 제안을 보았다.
std:: istringstream tmp_blob;
tmp_blob.rdbuf()->pubsetbuf(blockPtr, blockLength);
올바른 방법입니까? 표준에서
가능한 복제 http://stackoverflow.com/questions/1494182/setting-the-internal-buffer- Use-by-a-standard-stream-pubsetbuf) –