问题标签 [streambuf]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - C++ 装饰 basic_stream::underflow()
我想通过使用装饰器模式来扩展 basic_streambuf 对象的行为。这就是我目前得到的:
基本目标(作为第一步)将简单地将每个功能转发到装饰对象。因此,即使有一个指向它的基类的指针,也应该可以使用这个装饰器。
这一切都适用于编写方法,但我不知道如何处理从 uflow() 和 sgetc() 调用的 underflow() 函数。
c++ - istream::tellg() 与我的自定义 streambuf 类一起使用时返回 -1?
我正在尝试创建一个istream
直接从原始内存缓冲区读取的内容。
我在这里的另一篇文章中找到了一个很好的方法:
然后我istream
使用这个创建我的membuf
:
然后我阅读了使用getline()
和>>
运算符,一切都很棒。但是,我似乎无法使用seekg()
回退到缓冲区的开头,并且istream::tellg()
总是返回-1
.
我是否需要编写更多代码才能使这些工作,或者这注定要失败?
c++ - basic_streambuf::seekoff ios_base::in 时应该返回什么 | ios_base::out 指定了吗?
27.6.3.4.2 缓冲区管理和定位
basic_streambuf
效果:改变一个或多个受控序列中的流位置,其方式为本条款(27.8.2.4、27.9.1.5)中派生的每个类单独定义。- 默认行为:返回
pos_type(off_type(-1))
。
到目前为止,一切都很好。basic_streambuf
我正在使用的推导可以分别改变其位置ios_base::in
和/或ios_base::out
。但是,当两者都指定时,我需要返回什么?
如果您指定ios_base::in
or ios_base::out
,我们将返回特定序列的新流位置。
c++ - 将数据序列化到 std::streambuf
我有一个 Visual Studio 2008 C++ 项目,我正在尝试将数据从多个类序列化为自定义std::streambuf
实现。
带有序列化的数据类:
streambuffer 实现提供缓冲的 i/o 和覆盖underflow
和overflow
.
我的预期用途是这样的:
但是,MyStreambuf::overflow
永远不会被调用。我需要做什么才能将数据放入我的缓冲区?
谢谢,保罗
c++ - c++ IPC 在 Windows 上通过 streambuf
我有一个消息对象序列化为二进制数据流(它可以是任何 std::streambuf),我想将它传输到另一个进程。关键是,服务器应用程序必须处理许多客户端,连接必须是异步的(因为有多个客户端)和双向的(在后台它可能由两个独立的连接实现)。消息长度可变,应该排队。我应该为此选择哪种 IPC 方法?有没有简单的方法通过应用程序传输流缓冲区?速度不是关键,但最好不要阻止应用程序太长时间。任何事情都将在 Windows 下本地完成(我的目标是 XP 和更新版本),不需要网络支持。
我还需要监听传入连接的可能性。服务器应该自动检测新连接,进行一些握手并接受,如果它是兼容的。我知道我需要自己写很多我提到的东西。无论如何,它必须有可能实现,但当然越简单越好。
c++ - basic_streambuf::setbuf 应该设置哪个缓冲区?
我正在研究basic_streambuf
处理从/向 Winsock 套接字读取和写入的问题。就像basic_filebuf
,我在内部使用一个std::codecvt
对象将从底层套接字读取的字节转换为“套接字流缓冲区”的字符类型,并将写入套接字流缓冲区的字符转换为可以写入底层套接字的字节。为了做到这一点,我发现我需要为 streambuf 的读取和写入功能维护缓冲区。
我遇到的逻辑问题是 streambuf 实现旨在用于读取和写入(std::iostream
构造函数采用单个指向 streambuf 的指针),但只有一个可覆盖的成员函数可以自定义用于设置底层字符缓冲区:setbuf
。如果我想允许我的套接字 streambuf 模板的用户设置底层缓冲区,应该setbuf
设置读取缓冲区还是写入缓冲区?哪个选项更有意义?
c++ - 如何从 Boost ASIO streambuf 中读取数据?
有没有办法在不删除字节的情况下从流缓冲区中读取?
我正在从缓冲区中读取“消息大小”字段以检查是否收到了整个消息。
如果不是,我将发布另一个异步读取来获取它,但是处理程序无法知道消息应该持续多长时间 - 因为 size 字段已被删除。
任何帮助表示赞赏!
例如
c++ - boost asio streambuf在调用consume后不释放内存?
调用该consume
方法时,所占用的内存streambuf b
不会被释放。内存会增长async_read_until
多次。我的用法正确吗?有什么办法可以释放the get pointer
streambuf之前的内存吗?
c++ - C++ 流混淆:istreambuf_iterator 与 istream_iterator?
istreambuf_iterator
和 和有什么不一样istream_iterator
?一般来说,流和流缓冲区有什么区别?我真的找不到任何明确的解释,所以决定在这里问。
c++ - 使用streambuf作为缓冲区来提升asio读写
我正在使用此代码阅读
这是为了写作
其中 socket_ 是套接字,max_length 是值为 1024 的枚举,data_ 是长度为 max_length 的 char 数组。
但我想用 streambuf 替换 char 数组缓冲区。我试过了
但不工作。我该怎么做 ?