C++ 流操作(531 --)

        

 http://www.godebug.org/index.php/archives/105/


asio与序列化——被忽略的神器asio::streambuf

可惜我还没有用到序列化,以后再说吧。。。。。

从磁盘中每读一个字符都需要大量的硬件活动。这样向磁盘读写数据就会花费很多时间,为了避免频繁的读写数据,提供了缓冲技术。

        数据通过流的操作被读入缓冲区,此时,该数据不会立即写入到磁盘中,而是不断将其他数据读入缓存区中,直到缓冲区充满时,才一次性写入磁盘中。

       缓冲区是内存中的一块区域。它对数据的处理速度比硬盘快。因此,当大量数据缓存在缓冲区中时,会无意中提高了对数据的访问速度。 同时,当数据填满缓冲区

时,数据会一次性写入硬盘,跟着刷新缓冲区,为了下次将数据读入缓冲区做准备。

       在输出时,遇到行结束符号endl时才刷新缓冲区,而输入时,则是enter键才能刷新缓冲区并且将数据写入磁盘。


C++流涉及以下概念:

  • 标准I/O流:内存与标准输入输出设备之间信息的传递;
  • 文件I/O流:内存与外部文件之间信息的传递;
  • 字符串I/O流:内存变量与表示字符串流的字符数组之间信息的传递。

STL中定义的流类:

流类分类流类名称流 类 作 用
流基类ios所有流类的父类,保存流的状态并处理错误
输入流类istream输入流基类,将流缓冲区中的数据作格式化和非格式化之间的转换并输入
 ifstream文件输入流类
 istream_withassigncin输入流类,即操作符>>输入流
 istrstream串输入流类, 基于C类型字符串char*编写
 istringstream串输入流类, 基于std::string编写
输出流类ostream输出流基类,将流缓冲区中的数据作格式化和非格式化之间的转换。并输出
 ofstream文件输出流类
 ostream_withassignCout、cerr、clog的输出流类,即操作符<<输出流
 ostrstream串输入流类, 基于C类型字符串char*编写
 ostringstream串输入流类, 基于std::string编写
输入/输出流类iostream多目的输入/输出流类的基类
 fstream文件流输入/输出类
 strstream串流输入/输出类, 基于C类型字符串char*编写
 stringstream串流输入/输出类, 基于std::string编写



        Streambuf 类缓冲区,它的成员函数提供了填充缓冲区,访问缓冲区,刷新缓冲区和管理缓冲区的内存的功能。

  ios_base是ios的基类,该类提供了流的一般访问,如输入输出操作,判断数据流是否刻度,是二进制还是文本。

         


标准输入输出对象

    

iostream.h包含了对输入输出流进行操作所需的基本信息。因此大多数C++程序都包括iostream.h。在iostream.h头文件中不仅定义了有关的类,还定义了4种流对象, 见表13.2。

表13.2 文件中定义的4种流对象
对象含义对应设备对应的类c语言中相应的标准文件
cin标准输入流键盘istream_withassignstdin
cout标准输出流屏幕ostream_withassignstdout
cerr标准错误流屏幕ostream_withassignstderr
clog标准错误流屏幕ostream_withassignstderr

在iostream头文件中定义以上4个流对象用以下的形式(以cout为例):
    ostream cout ( stdout);
在定义cout为ostream流类对象时,把标准输出设备stdout作为参数,这样它就与标准输出设备(显示器)联系起来,如果有
    cout <<3;
就会在显示器的屏幕上输出3。 

重定向

重载运算符


 





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值