文档章节

streambuf相关

abing_hu
 abing_hu
发布于 2013/10/13 18:13
字数 308
阅读 142
收藏 0

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

##streambuf简介 在C++中所有的stream对象内部都有一个stream buffer,不管这个流对象是缓存还是不缓存的。

All stream objects, no matter whether buffered or unbuffered, have an associated stream buffer: Some stream buffer types may then be set to either use an intermediate buffer or not. 摘自streambuf

上面的stream buffer,实际上在stream对象内存存储的就是一个streambuf指针。这个streambuf有个很强大的特性,将streambuf指针通过操作符"<<"和另一个stream对象连接起来就可以达到将streambu中的全部数据输出到另一个stream对象的效果。

下面是两个简单的示例:

###示例1 将ifsream读取的stype.cpp的内容全部输出到console

<!-- lang: cpp -->
#include<fstream>  
#include<iostream>  
using namespace std;  
int main()  
{  
	ifstream in("stype.cpp");  
	assure(in,"stype.cpp"); // 确保文件被正确打开  
	cout<<in.rdbuf(); // rdbuf返回streambuf指针 
	return 0;  
}

###示例2 下载LICENSE_1_0.txt文件,并将内容全部输出至console。以下示例代码摘自开源项目avhttp的README.md,这里的http_steam继承自steambuf,有下载功能。

<!-- lang: cpp -->
#include <iostream>
#include "avhttp.hpp"

int main(int argc, char* argv[])
{
    try
    {
        boost::asio::io_service io;
        avhttp::http_stream h(io);

        h.open("http://www.boost.org/LICENSE_1_0.txt");
        std::cout << &h;
    }
    catch (std::exception& e)
    {
        std::cerr << "Error:" << e.what() << std::endl;
    }

    return 0;
}

© 著作权归作者所有

abing_hu
粉丝 11
博文 29
码字总数 7098
作品 0
杭州
后端工程师
私信 提问
I/O: std::basic_streambuf

template class std::basic_streambuf控制输入,输出字符序列. 之前几篇博客介绍各个stream并不负责实际的读写,而是委托给stream buffer完成. 处理stream buffer的一般性接口十分简单: str...

SHIHUAMarryMe
2016/09/18
121
0
OpenRTMFP/Cumulus Primer(10)IO 管理之流缓冲区

OpenRTMFP/Cumulus Primer(10)IO 管理之流缓冲区 Author: 柳大·Poechant(钟超) Email: zhongchao.ustc#gmail.com (#->@) Blog: Blog.CSDN.net/Poechant Date: April 24th, 2012 本文主要......

晨曦之光
2012/04/24
86
0
boost read_some函数历程

read_some一旦有遇到数据发送过来,就会立刻返回,但是怎么知道数据是否已经发送结束 目前的情况下,是继续等待接收,直到遇到协商的结束符号.如果read_some返回数据是0,代表对端已经关闭了...

技术小胖子
2017/11/21
0
0
c++序列化调研

1. 最常用的两种C++序列化方案的使用心得(protobuf和boost serialization) http://www.cnblogs.com/lanxuezaipiao/p/3703988.html 2. http://www.iteye.com/topic/319063 3. C 语言的数据序......

zongquanliu
2014/12/01
0
0
我就是想写一个C++的bitstream类,可是为什么输入的时候就不行了

这一段是我的程序,为什么,std::streambuf * pbuf的pbuf->sgetc != EOF会出问题??正确结果应该是把10111001输出出来就对了…… 还有,这儿有一段别人的代码,可以读我的huff.trie文件,为...

andalousie
2014/03/05
350
3

没有更多内容

加载失败,请刷新页面

加载更多

阿里云视频云正式支持AV1编码格式 为视频编码服务降本提效

今天我们要说的 AV1 可不是我们平时说的 .AVI 文件格式,它是由AOM(Alliance for Open Media,开放媒体联盟)制定的一个开源、免版权费的视频编码格式,可以解决H.265昂贵的专利费用和复杂的...

一肥仔
18分钟前
8
0
软件缺陷静态分析 CodeSonar 5.2 新版发布

对于使用C和C++构建安全关键软件的开发团队而言,CodeSonar一直是首选的静态分析解决方案。在近期发行的版本中,CodeSonar通过使用开放标准来扩展其语言覆盖范围,并增加了对Java、C#、Obj...

旋极科技
19分钟前
5
0
数据迁移

1. insert into values 或 insert into select批量插入时,都满足事务的原子性与一致性,但要注意insert into select的加锁问题。 2. replace into与insert into on duplicate key update都可...

qiang123
25分钟前
6
0
Linux装Windows系统后还不会激活?3招教你搞定

     相信大家已经发现荣耀MagicBook科技尝鲜版有多“香”了,不但可以轻松的将Linux系统装回Windows系统,还足足省下了300大洋!但是装回系统就万事大吉了吗?NoNoNo,我们还需要去激活...

梅丽莎好
28分钟前
6
0
Tomcat8源码分析-请求处理过程

上一篇:Tomcat8源码分析-启动流程-start方法 此篇主要讲Tomcat8从接收请求到处理请求的时序图画出来,并用文字描述一下主要流程 时序图 说明 文字描述流程之前先提示如下两点: 1.Acceptor...

特拉仔
30分钟前
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部