C++ Primer Chapter 8-1

来源:互联网 发布:演唱会抢票软件 编辑:程序博客网 时间:2024/05/19 22:47
1:标准库定义了一组处理宽字符的类,都在标准 IO 类名字前加一个 w,标准类同一头文件

2:可以将一个派生类当做基类来使用

3:任何流对象都是不可以复制赋值,只能被引用,又因为流操作改变流对象,所以不可以常量引用

4:IO流中的状态值的不同位代表了不同的流状态标志位。 比如 badbit,failbit,eofbit
goodbit, 这些位都可以通过位操作来置位。比如 auto state = cin.rdstate() 可以读出这些状态,cin.setstate (state) 可以设置流状态 , 可以用 state & ~cin.badbit | cin.failbit 操作state的相应位。

5: 我们可以用 bad() , fail() , eof() , good() 来获取流对象的状态变量相应位的状态,如果该位置位,则返回True,说明流对象当前前处于该状态。

6:流输入的理解:当我们用 cin 输入时,首先流对象从缓存读入数据,发现缓存中是空的,则会从输入设备向缓存读入数据,遇到回车后结束设备读入缓存,开始从缓存读入到变量中,一直到缓存为再次从设备读入缓存,然后再开始读缓存中数据到变量。
比如   while(cin >>  v){ cout  << v;} 每次我们输入时,开始缓存为空的,需要从设备读入数据,我们按下回车停止从设备读入缓存,,这时候开始从缓存中读入到变量 V 中;每次从缓存中读出一个数据则执行一次cout,开始读缓存中下一个数据  ,直到缓存空了,再开始从设备读入缓存。结合习题8.2运行结果理解

7:endl  可以显示的刷新缓存区,flush 也是刷新缓存区但是不写任何数据,end 则写入空字符后刷新 。cin 的读和 cerr 的写也可以刷新cout的缓存

8:程序崩溃并不会刷新缓存区,所以如果调试时遇到该输出的却没有输出,可能是语句执行了,但是缓存区没有刷新而已

9:关联的输入和输出,如果一个输入流关联到一个输出流,那么输入流的读取都会刷新输出流

10:可以用 tie () 函数关联两个流。一个流只能关联一个流,但是一个流可以被多个流关联。

11: 文件流对象:fstream文件流对象必须打开文件绑定文件才能够操作文件,而 IO的则不需绑定,因为 IO 只对应于控制台键盘这个流对象,而文件流则不一样,因为文件可以有很多个,所以文件流对象要绑定文件并且打开文件才可以读写。

12:打开文件需要检查文件是否打开成功

13:一个文件流对象只可以关联一个文件,如果想关联另外一个文件,只能把关闭现有文件,重新打开新文件

14:当一个文件流对象被销毁时,与之关联的文件会自动的被关闭。

0 0
原创粉丝点击