【发布时间】:2012-04-20 17:10:27
【问题描述】:
pubsetbuf 成员 std::stringbuf 在 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 成员。
【问题讨论】:
标签: c++ visual-studio stl std