IO

1、IO对象无拷贝或赋值,因此我们也不能将形参或返回类型设置为流类型。进行IO操作的函数通常以引用方式传递和返回流。读写一个IO对象通常会改变其状态,因此传递和返回的引用不能是const的。

2、由于流可能处于错误状态,因此代码通常应该在使用一个流之前检查它是否处于良好状态。将流当做条件使用的代码等价于!fail();。

3、如果程序异常终止,输出缓冲区是不会被刷新的。当一个程序崩溃后,它所输出的数据很可能停留在输出缓冲区中等待打印。

4、当一个输入流关联到一个输出流时,任何试图从输入流读取数据的操作都会先刷新关联的输出流,标准库将cin和cout关联在一起。

5、可以将输入流关联到输出流,也可以将输出流关联到另一个输出流,关联的函数是tie,当传入的参数为nullptr时,表示该流不再关联到其他流。每个流同时最多关联到一个流,但是多个流可以同时关联到同一个ostream。

6、fstream和sstream继承自iostream,因此在传参时,如果参数类型是iostream&,则也可以传递一个fstream或sstream类型的实参。当一个fstream对象被销毁时,会自动调用close。

7、以out模式打开文件会丢弃已有数据。阻止一个ofstream清空给定文件内容的方法是同时指定app模式或者in模式。只有out时才可以设定trunc,只要没有设定trunc就可以设定app,当设定app时即使没有显示设定out,默认也是out的。对于一个给定流,每当打开文件时都可以改变其文件模式。

posted @ 2022-12-15 17:24  许卡文迪  阅读(804)  评论(0编辑  收藏  举报