Boost.Asio streambuf:如何在streambuf中复制数据

时间:2012-10-07 09:58:26

标签: c++ boost-asio iostream streambuf

  

可能重复:
  Copy a streambuf's contents to a string

最近我正在研究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的开头。

有可能吗? 谢谢。

0 个答案:

没有答案