ISO/IEC C++ China Unofficial

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 647|回复: 4

[TODO] stream 开火车

[复制链接]

10

主题

108

帖子

507

积分

超级版主

RA2DIY 特别行政区行政长官

Rank: 8Rank: 8

威望
4
经验
388
贡献
3
发表于 2016-2-21 19:08:38 | 显示全部楼层 |阅读模式
这是对 std::*stream 的重构设想:
  • 删除同时支援 I/O 的 stream,包括但不限于 basic_iostream, basic_fstream, basic_stringstream 等;
  • 提供 filtered_(i|o)stream,即基于 stream 的 stream;
  • (i|o)fstream 不再提供 i/o buffering,其功能用一个 buffering_(i|o)stream (继承自 filtered_(i|o)stream) 替代。


最终大概可以实现这样的功能:
  1. auto ifs = make_unique<ifstream>("path/to/file");
  2. auto bifs = make_unique<buffering_istream>(move(ifs));
  3. auto zbifs = make_unique<zlib_decoding_istream>(move(bifs));
  4. auto b64zbifs = make_unique<base64_encoding_istream>(move(zbifs));

  5. char data[4096];
  6. size_t len;
  7. while((len = b64zbifs->readsome(data, sizeof(data))) > 0){
  8.     // 处理数据。
  9. }
复制代码
以上代码从文件 path/to/file 中读取数据,提供 i/o buffering,将其使用 zlib 解压,再用 base64 编码,最后处理得到的 ASCII 数据。

We will prevail!! www.lhmouse.com
回复

使用道具 举报

3

主题

74

帖子

283

积分

中级会员

Rank: 3Rank: 3

威望
9
经验
182
贡献
9
发表于 2016-2-22 15:43:59 | 显示全部楼层
-挽-
#if !idppc
/*
** float q_rsqrt( float number )
*/
float Q_rsqrt( float number )
{
        long i;
        float x2
回复

使用道具 举报

10

主题

108

帖子

507

积分

超级版主

RA2DIY 特别行政区行政长官

Rank: 8Rank: 8

威望
4
经验
388
贡献
3
 楼主| 发表于 2016-2-23 16:33:42 | 显示全部楼层
We will prevail!! www.lhmouse.com
回复 支持 反对

使用道具 举报

0

主题

1

帖子

15

积分

新手上路

Rank: 1

威望
0
经验
14
贡献
0
发表于 2017-2-11 14:28:25 | 显示全部楼层
摸猫猫
回复

使用道具 举报

10

主题

108

帖子

507

积分

超级版主

RA2DIY 特别行政区行政长官

Rank: 8Rank: 8

威望
4
经验
388
贡献
3
 楼主| 发表于 2017-3-3 00:59:52 | 显示全部楼层
We will prevail!! www.lhmouse.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|ISO/IEC C++ China Unofficial

GMT+8, 2017-12-18 09:30 , Processed in 0.048584 second(s), 22 queries , XCache On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表