繁体   English   中英

尝试从boost :: iostreams访问源设备

[英]Trying to access source device from boost::iostreams

我编写了一个自定义源设备,该设备对到目前为止已读取的字节进行计数:

class socket_stream_source : public boost::iostreams::source
{
public:

    int readSoFar=0;

    socket_stream_source(socket_ptr sock) : _sock(sock)
    {

    }

    std::streamsize read(char* s, std::streamsize n)
    {
        int readCount = _sock->read_some(boost::asio::buffer(s, n));
        readSoFar += readCount;
        return readCount;
    }

private:
    socket_ptr _sock;

};

我正在这样使用它:

boost::iostreams::stream<socket_stream_source> in(sock);

如何访问我的readSoFar变量?

还是有另一种方法来计算从istream读取的字节数?

只需使用boost :: iostreams :: stream提供的设备访问运算符,即

T& operator*();
T* operator->();

在您的代码中就足够了:

in->readSoFar;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM