3

重複の可能性:
streambuf の内容を文字列にコピーする

最近、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 の先頭にあります。

出来ますか?ありがとうございました。

4

0 に答える 0