gpt4 book ai didi

c++ - 尝试从 boost::iostreams 访问源设备

转载 作者:行者123 更新时间:2023-11-28 05:07:44 27 4
gpt4 key购买 nike

我写了一个自定义源设备来计算到目前为止读取的字节数:

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;

关于c++ - 尝试从 boost::iostreams 访问源设备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44268241/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com