【发布时间】:2010-11-12 11:15:04
【问题描述】:
我想一次一个字节地将 zlib 流的inflate() 的输出读入缓冲区,以便解析出单行。
有没有办法指定inflate() 返回的字节数,以便我可以查看换行符?
【问题讨论】:
我想一次一个字节地将 zlib 流的inflate() 的输出读入缓冲区,以便解析出单行。
有没有办法指定inflate() 返回的字节数,以便我可以查看换行符?
【问题讨论】:
这可能会带来糟糕的性能,因为inflate() 函数可能需要一些启动成本。
我建议只使用合理的输出缓冲区大小,然后在每次调用 inflate() 后遍历缓冲区,收集找到的所有完整行。当然,很可能会有一条“尾巴”,即一条不完整的线,您需要在下一轮中跟踪它。
【讨论】:
zStream.avail_out 并在该点以空值终止缓冲区 - 正是这个剪辑的缓冲区需要解析换行符。不过,我已经设置了一个大缓冲区,它运行得相当快。
当您调用inflate() 时,您将一个指针传递给z_stream_s 结构。 z_stream_s::avail_out该结构的成员变量正是用于指定输出缓冲区的大小。
【讨论】: