c++IO库

c++IO库,第1张

一、IO类概述

1、标准库定义了四个IO对象。

(1)、我们可以用一个名为cin的istream类型的对象来处理输入,这个对象也叫标准输入

(2)、可以用ostream类型的对象cout,称作标准输出

(3)、另外两个ostream对象:cerr输出警告和错误消息,clog输出程序运行时的一般信息

2、IO库类型和头文件

iostream从流中读写fstream从文件读写sstream从string中读写
istreamifstreamistringstream
ostreamofstreamostringstream
iostreamiofstreamiostringstream

3、为了使用宽字符的语言,标准库定义了一组类型和对象 *** 纵wchar_t类型的数据,宽字符版本就是在普通的char版本前加上w,例如wcin,wcout

4、标准库使我们能忽略这些不同的类型的流之间的差异,这是通过继承机制来实现的,如ifstream和istringstream都继承自istream,我们都可以对其使用>>

二、使用IO对象

1、IO对象无拷贝和赋值,因此不能将其作为普通形参或返回类型,只能以引用的方式进行传递

2、IO类定义了一些函数和标志,帮助我们访问和 *** 纵流的条件状态

//此处strm代表一种IO类型,下面四个代表一种状态
strm::badbit		//指出流已崩溃
strm::failbit       //支持一个IO *** 作失败了
strm::eofbit        //指出流到达了文件结束
strm::goodbit       //指出流未处于错误状态
s.eof()             //若流s的eofbit置位,即文件末尾,则返回true
s.fail()            //若流s的failbit或badbit置位,则返回true
s.bad()             //若流s的badbit置位,则返回true
s.good()            //若流s处于有效状态,则返回true

s.clear()           //将流s的所有条件状态复位,将流的状态设置为有效,返回void
s.clear(flags)      //将流s的对应条件状态复位
s.setstate(flags)   //设置流s的对应条件状态
三、管理输出缓冲

1、每个输出流都管理一个缓冲区,用来保存程序和数据的读写,例如当我们输出一个串时,可能立即被打印出来,也可能先保存在缓存区,随后打印。有了缓冲机制, *** 作系统就可以将程序的多个输出 *** 作组合成单一的系统级写 *** 作,可以带来很大的性能提升

2、导致缓冲区刷新(该输出的东西都输出)的原因可能有:
(1)、程序正常结束,缓冲刷新作为main的return的一部分

(2)、缓冲区满时刷新

(3)、用 *** 纵符如endl、flush、ends显式刷新。endl换行并刷新缓冲区;flush刷新不会额外输出;ends向缓冲区插入空字符并刷新

(4)、输出 *** 作之后可用 *** 纵符unitbuf设置流的内部状态,来清空缓存区。默认时cerr时unitbuf的,即cerr的内容立即刷新

cout << unitbuf;      //之后的所有cout输出都将立即刷新缓冲
cout << nounitbuf;    //恢复cout的默认刷新

(5)、一个输出流可能被关联到另一个流。读写被关联的流时,关联到的流的缓冲被刷新。例如,cin和cerr关联到cout,故读cin或写cerr都将使cout刷新

3、当一个输入流被关联到一个输出流时,任何试图从读入流读取数据的 *** 作都会先刷新输出流,例如标准库已经将cout和cin关联在一起,每次cin都会刷新cout的缓冲区

4、我们可以用tie成员函数将istream对象与ostream或者ostream与ostream

cin.tie(&cout);            //将cin关联到cout
cin.tie(nullptr);          //解开关联

5、每一个流同时最多关联到一个流,但是多个流可以同时关联到一个ostream

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/914996.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-16
下一篇2022-05-16

发表评论

登录后才能评论

评论列表(0条)

    保存