C++_IO库学习篇

一、IO类

                             IO库类型和头文件

头文件 类型
iostream

istream 从流中读取数据

ostream 向流写入数据

iostream 读写流

fstream

ifstream 从文件中读取数据

ofstream  文件写入数据

fstream 读写文件

sstream

istringstream 从string读取数据

ostringstream 向string写入数据

stringstream 读写string                              

由于ifstream 和istringstream都继承自istream。因此我们可以像使用istream对象一样来使用ifstream和istringstram对象。

(继承:程序设计功能,令一个类型可以从另一个类型继承接口。)

eg:    ostringstream out1;  

         string test(4,‘r’);

         out1 << test <<endl; //可以向ostringstream对象写入string数据

IO对象无拷贝或赋值

注意:因为我们不能对IO对象进行拷贝或者赋值操作

          因此以下操作一定要避免

         1. 将流类型设置为形参或者返回类型

         2.传递和返回流的引用不能是const的(读写IO对象就会改变其状态)

条件状态

定义:可以被任何流类使用的一组标志和函数,用来指定给定流是否可用。

                                              IO库条件状态

strm::iostate strm是一种IO类型,提供表达条件状态的完整功能
strm::badbit 指出流已经崩溃
strm::failbit 指出一个IO操作失败了
strm::eofbit 用来指出流已经到达文件尾
strm::goodbit 用来指出流位处于错误状态
s.eof() 若流s,  eofbit置位,返回true
s.fail() 若流的failbit,bad置位,返回true
s.bad() bad位置位,返回true
s.good() 若流处于有效状态,返回true
s.clear()

将流s中所有条件状态位复位,流的状态设置为有效

s.clear(flag) 根据给定娥fl复位ags标志位,将流s中对应条件状态复位
s.setstate(flags) 根据给定娥fl复位ags标志位,将流s中对应条件状态置位
s.rdstate 返回流s的当前条件状态,返回值类型位strm:iostate

输出缓冲区

每个输出流都管理一个缓冲区,用来保存程序读写的数据。

eg: os << "ok";

文本字符串可能立即打印出来,但也有可能被操作系统保存在缓冲区内,随后再打印。

好处:设备的写操作很费时,如果操作系统将多个输出操作组合为一个单一的设备写操作可以带来很大的性能提升。

刷新输出缓冲区的操作

cout << "hi" << endl; //输出一个hi 换行 后刷新

cout << "hi" << flush;//输出 “hi” 后刷新

cout << "hi"  << ends;//输出 “hi” 空字符 后刷新

unitbuf

执行cout << unitbuf 所有输出操作后都会立即刷新缓冲区

执行cout << nounitbuf 回到正常的缓冲方式

 

猜你喜欢

转载自blog.csdn.net/lovely_ke/article/details/82957319