std::stringbuf のpubsetbufメンバーが Visual Studio 2010 でまったく機能しません!
コード:
char *FileData = ... ;
unsigned long long FileDataLen = ... ;
std::stringstream *SS = new std::stringstream(std::stringstream::in | std::stringstream::out);
SS->rdbuf()->pubsetbuf( FileData, (std::streamsize)FileDataLen );
pubsetbufは Visual Studio では何もしません!!!
回避策 #1 :
std::stringstream *SS = new std::stringstream( std::string(FileData, (size_type)FileDataLen ) ),std::stringstream::in | std::stringstream::out);
回避策 2 :
SS->rdbuf()->sputn(FileData, (streamsize)FileDataLen);
ただし、これらの回避策は両方とも不要なメモリ コピーを生成します。std::stringbuf の有効なpubsetbufメンバーが絶対に必要です。