七、输入/输出流--streambuffer类介绍--自定义缓冲区

本文主要探讨了C++中streambuffer类的自定义缓冲区,包括输入和输出缓冲区的实现。详细解释了overflow()函数的作用,它是如何处理缓冲区满时的数据写入,以及如何在缓冲区无空位时分配新的存储空间。同时,文章提到了自定义输入缓冲区的关键,如underflow()函数用于读取数据的重要性。通过对这些函数的派生和重载,可以实现自定义的流缓冲区类。
摘要由CSDN通过智能技术生成

【基本上没看懂,那个大神如果可以的话,推荐一点相关资料,真的不太明白这个缓冲区的内部原理】

3 自定义缓冲区

  1. 缓冲区有basic_streambuf定义,针对字型为char和wchar
  2. 标准库提供了预定义的streambufwstreambuf

缓冲区的主要接口由函数返回的三个指针构成:


(1) read(input)缓冲区的接口由:

  1. eback()
  2. gptr()
  3. egptr()

(2) write(output)缓冲区的接口:

  1. pbase() :Outputstream缓冲区的起始位置;
  2. pptr() : 当前写入位置;
  3. epptr() : Output缓冲区的结尾,指向“最后一个缓冲的字符”的后一个位置;

pbase和pptr中间的字符序列已被写到相应的通道,但未被清空;

缓冲的写入成员函数:

  • sputc() : 写入一个字符,如果w缓冲区有空的改写位置,字符被复制到该位置上,然后指针指向下一个位置;如果缓冲区是满的,调用虚函数overflow()将缓冲区发送到对应输出通道;basic_streambuf实例化的overflow()只返回end-of-fiel(),表示没有位置写入;

3.1 overflow

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值