可能重复:
将流缓冲区的内容复制到字符串
最近我正在研究 boost::asio::streambuf。由于我的英语很差,我无法表达我的意思。所以首先,请看下面的代码。
class bar {
public:
int length() const
{
return sizeof buffer;
}
char* get()
{
return &buffer[0];
}
private:
char buffer[100];
};
template<typename Elem, typename Traits>
std::basic_istream<Elem, Traits>& operator>>(std::basic_istream<Elem, Traits> &is, bar& data)
{
return is.read(data.get(), data.length());
}
boost::asio::streambuf buf;
buf.prepare(65535);
std::ostream os(&buf);
// some operations writing data to buf
std::istream is(&buf);
bar bdata
is >> bdata; // #1
在#1,数据将从中读取buf
并存储到bdata
。
这会导致存储到的数据bdata
从 中删除buf
。我想从 streambuf 中获取数据,但根本不想更改 streambuf 的内容。
streambuf 有很多数据,我想要的数据位于 streambuf 的开头。
可能吗?谢谢你。